首页 > 解决方案 > 首先按值排序字典,然后按键排序

问题描述

我在 python 中有一个带有字符串键和整数值的字典。我想按值排序,如果两个值相同,则按键对字典进行排序。字典的一个例子。是:

{'Spain':3,'Morocco':1,'England':3,'canada':2}

排序后应该是:

{'England':3,'Spain':3,'canada':2,'Morocco':1}

标签: python

解决方案


您可以尝试下面的方法,它按项目对字典进行排序。
-item[1]按值降序item[0]排序,而按键升序排序。因为 sorted 的结果是一个元组列表,我们需要使用dict()构造函数调用将其转换为 dict。

d = {'Spain': 3, 'Morocco': 1, 'England': 3, 'canada': 2}
out = dict(sorted(d.items(), key=lambda item: (-item[1], item[0])))
print(out)

输出:

{'England': 3, 'Spain': 3, 'canada': 2, 'Morocco': 1}

推荐阅读