问题描述
我输入了两个列表:姓名和年龄。 我想主要按年龄排序(降序),但是如果存在重复的年龄,我想按字母顺序对那些特定的重复人进行排序。 例如:
name_list = ['Barbara','Anna','Chloe','Debora']
age_list = [31,31,45,50]
输出应为:
['Debora','Barbara'],[50,31]
我尝试使用zip()
和.sort(reverse=True)
。我应该如何处理?
解决方法
这是键的结果:排序的值 您只需要将其替换为列表
'''
name_list = ['Barbara','Anna','Chloe','Debora']
age_list = [31,31,45,50]
example_dict = dict(zip(name_list,age_list))
example_dict = sorted(example_dict.items(),key = lambda x : x[1],reverse = True)
'''
,
压缩两个列表(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]
。