python中的排序字典,值按降序排序,如果冲突,则按键排序

python中的排序字典,值按降序排序,如果冲突,则按键排序,python,list,sorting,python-3.x,dictionary,Python,List,Sorting,Python 3.x,Dictionary,我有一本字典 r = {1: 4, 2: 4, 4: 4, 5: 4, 6: 10} 我想根据值降序排序,如果冲突,则按键升序排序。 i、 e输出应为 [6 ,1 ,2 ,4 ,5] 我该怎么做 如果我有列表而不是字典,上面的内容会很容易吗?i、 e r = [(1, 4), (2, 4), (4, 4), (5, 4), (6, 10)] 使用键参数进行排序,以便为每个元素生成元组: sorted(r, key=lambda k: (r[k], -k), reverse=True) 或

我有一本字典

r = {1: 4, 2: 4, 4: 4, 5: 4, 6: 10}
我想根据值降序排序,如果冲突,则按键升序排序。 i、 e输出应为

[6 ,1 ,2 ,4 ,5]
我该怎么做

如果我有列表而不是字典,上面的内容会很容易吗?i、 e

r = [(1, 4), (2, 4), (4, 4), (5, 4), (6, 10)]
使用键参数进行排序,以便为每个元素生成元组:

sorted(r, key=lambda k: (r[k], -k), reverse=True)

现在,键将根据值、负键元组进行反向排序,或者根据负值、键元组进行正向排序。元组是按字典顺序排序的,因此通过对键进行排序可以打破相等值之间的联系。通过对值或键求反,可以影响反向排序

演示:

sorted(r, key=lambda k: (-r[k], k))
>>> r = {1: 4, 2: 4, 4: 4, 5: 4, 6: 10}
>>> sorted(r, key=lambda k: (r[k], -k), reverse=True)
[6, 1, 2, 4, 5]
>>> sorted(r, key=lambda k: (-r[k], k))
[6, 1, 2, 4, 5]