我有两个列表的输入:姓名和年龄。我想主要按年龄(降序(排序,但如果有重复的年龄,我想按字母顺序对那些特定的重复的人进行排序。例如:
name_list = ['Barbara', 'Anna', 'Chloe', 'Debora']
age_list = [31, 31, 45, 50]
输出应为:
['Debora', 'Chloe', 'Anna', 'Barbara'], [50, 45, 31, 31]
我试过使用zip()
和.sort(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]
。
这是键的结果:排序的值您只需要将其替换为列表
'''
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)
'''