首页 > 解决方案 > 在 Python 3.6+ 中按值排序字典

问题描述

我一直在寻找一种在 Python 中使用其值对字典进行排序的方法,经过几次尝试,它就是这样的:

a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}

这段代码似乎可以工作,但我认为它的性能很差,有没有更好的方法?

标签: pythonpython-3.xperformancesortingdictionary

解决方案


您不需要进行双键/值交换,您可以这样做:

a = {k: v for k, v in sorted(a.items(), key=lambda x: x[1])}

排序的文档

测试代码:

data = dict(a=1, b=3, c=2)
print(data)
data_sorted = {k: v for k, v in sorted(data.items(), key=lambda x: x[1])}
print(data_sorted)

结果:

从 CPython 3.6 开始:

{'a': 1, 'b': 3, 'c': 2}
{'a': 1, 'c': 2, 'b': 3}

推荐阅读