«

python:按性别排列姓名

admin 发布于 阅读:174 Python


以下是使用 Python 解决将包含姓名和性别的两列数据中,把同一性别两个男性接着两个女性排列。
示例代码如下:
data = [
{'姓名': '张三', '性别': '男'},
{'姓名': '李四', '性别': '女'},
{'姓名': '王五', '性别': '男'},
{'姓名': '赵六', '性别': '女'},
{'姓名': '钱七', '性别': '男'},
{'姓名': '孙八', '性别': '女'},
{'姓名': '周九', '性别': '男'},
{'姓名': '吴十', '性别': '女'},
{'姓名': '郑十一', '性别': '男'},
{'姓名': '王十二', '性别': '女'},
{'姓名': '刘十三', '性别': '男'},
{'姓名': '陈十四', '性别': '女'},
{'姓名': '杨十五', '性别': '男'},
{'姓名': '胡十六', '性别': '女'},
{'姓名': '朱十七', '性别': '男'},
{'姓名': '何十八', '性别': '女'},
{'姓名': '高十九', '性别': '男'},
{'姓名': '林二十', '性别': '女'}
]

先分别取出男性和女性的数据

male_data = [item for item in data if item['性别'] == '男']
female_data = [item for item in data if item['性别'] == '女']

交替合并男性和女性数据

sorted_data = []
i, j = 0, 0

while i < len(male_data) and j < len(femaledata):
for
in range(2): # 每次添加两个男性
if i < len(male_data):
sorted_data.append(maledata[i])
i += 1
for
in range(2): # 每次添加两个女性
if j < len(female_data):
sorted_data.append(female_data[j])
j += 1

如果男性或女性数据有剩余,添加到末尾

while i < len(male_data):
sorted_data.append(male_data[i])
i += 1

while j < len(female_data):
sorted_data.append(female_data[j])
j += 1

打印结果

for item in sorted_data:
print(item)

python