python - 在 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())}
这段代码似乎可以工作,但我认为它的性能很差,有没有更好的方法?
解决方案
您不需要进行双键/值交换,您可以这样做:
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}
推荐阅读
- python - 使用 Python 创建一个非常大的二进制频率矩阵来运行协同过滤
- isabelle - 伊莎贝尔发展统计
- vb.net - .doc文件批量转换为.txt的更新方法
- vba - Microsoft Project - 防止字段自动计算
- mysql - 为什么我的数据库没有更新?(使用netbeans xampp mysql)
- scala - 如何在 Spark(使用 Scala)中用逗号替换空格?
- python - django-admin:在 HostGator 共享主机中找不到用于启动 django 项目的命令
- r - 编写一个函数以将另一个函数包含在回归模型中
- tensorflow - 将多 GPU 与 keras.utils.multi_gpu_model 一起使用时,SageMaker 失败
- r - R Lubridate 默认按字母顺序排列月份和工作日