使用两个标准对 Python ZIP 进行排序?
Sorting a Python ZIP using two criteria?
我输入了两个列表:姓名和年龄。
我想主要按年龄(降序)排序,但如果有重复的年龄,我想按字母顺序对那些特定的重复人进行排序。
例如:
name_list = ['Barbara', 'Anna', 'Chloe', 'Debora']
age_list = [31, 31, 45, 50]
输出应该是:
['Debora', 'Chloe', 'Anna', 'Barbara'], [50, 45, 31, 31]
我试过使用 zip()
和 .sort(reverse=True)
。我该如何处理?
这是键的结果:排序值
你只需要将它替换成 list
'''
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]
.
我输入了两个列表:姓名和年龄。 我想主要按年龄(降序)排序,但如果有重复的年龄,我想按字母顺序对那些特定的重复人进行排序。 例如:
name_list = ['Barbara', 'Anna', 'Chloe', 'Debora']
age_list = [31, 31, 45, 50]
输出应该是:
['Debora', 'Chloe', 'Anna', 'Barbara'], [50, 45, 31, 31]
我试过使用 zip()
和 .sort(reverse=True)
。我该如何处理?
这是键的结果:排序值 你只需要将它替换成 list
'''
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]
.