在 Python 3.6 中按值对 Dict 进行排序

新手上路,请多包涵

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

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

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

原文由 Giuseppe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 431
2 个回答

默认情况下,字典是根据键排序的,但是排序函数将一个函数作为参数,您可以使用该函数更改程序的行为。

 d={'a':6,'b':4,'k':3}
print(sorted(d))

sorted_by_values= sorted(d,key=lambda x:d[x])
print(sorted_by_values)

原文由 thinkingmonster 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 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}

原文由 Stephen Rauch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题