python - Python中的条件排序
问题描述
在Python中,我如何根据条件对两个项目列表进行排序:如果第一项不相等,则进行正常排序(基于第一项的值),如果第一项相等,则根据第二项的大小进行排序(较大的值首先出现):
像这样的字典的键:
{(0, 3): (3, 8), (0, 11): (4, 4), (1, 4): (5, 32)}
然后应该这样排序:
[(0, 11), (0, 3), (1, 4)]
解决方案
使用一个键函数来反转第二个元素的排序:
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)]