我输入了两个列表:姓名和年龄。
我主要想按年龄排序(降序),但如果有年龄的重复,我想按字母顺序对那些特定的重复人员进行排序。
例如:
name_list = ['Barbara', 'Anna', 'Chloe', 'Debora']
age_list = [31, 31, 45, 50]
输出应为:
['Debora', 'Chloe', 'Anna', 'Barbara'], [50, 45, 31, 31]
我试过使用zip()
和.sort(reverse=True)
。我应该如何处理这个问题
Tags:
这是键的结果:排序值 您只需将其替换到列表中即可
压缩两个列表(
name_age = list(zip(name_list, age_list))
)后,只需先排序:name_age.sort()
。这将使用第一个条目进行排序,即按字母顺序排序。由于.sort()
实现了一个稳定的排序,因此在下一次排序的条件相同的情况下,将保持此顺序。这将保证,字母顺序将保持不变,为同龄人如果现在使用第二个条目作为键进行排序:
name_age.sort(key=lambda x: x[1], reverse=True)
,则会得到所需的结果。要使两个列表再次分开,可以使用列表理解:[x[0] for x in name_age]
和[x[1] for x in name_age]
相关问题 更多 >
编程相关推荐