首页 > 解决方案 > Python中的条件排序

问题描述

在Python中,我如何根据条件对两个项目列表进行排序:如果第一项不相等,则进行正常排序(基于第一项的值),如果第一项相等,则根据第二项的大小进行排序(较大的值首先出现):

像这样的字典的键:

{(0, 3): (3, 8), (0, 11): (4, 4), (1, 4): (5, 32)}

然后应该这样排序:

[(0, 11), (0, 3), (1, 4)]

标签: pythonpython-2.7sorting

解决方案


使用一个键函数来反转第二个元素的排序:

d = {(0, 3): (3, 8), (0, 11): (4, 4), (1, 4): (5, 32)}
print(sorted(d.keys(), key=lambda tup: (tup[0], -tup[1])))  # note the minus
# [(0, 11), (0, 3), (1, 4)]

推荐阅读