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)