Python中如何对list内的每个dictionary按value值排序
Python实现字典列表中每个字典按value排序方案
前置说明
Python 3.7及以上版本默认支持字典保留插入顺序,以下默认基于该版本环境给出方案。如果使用3.7以下版本,需要引入collections.OrderedDict实现有序字典结构。
最简实现(推荐)
使用列表推导式配合sorted方法完成,代码如下:
# 注意不要使用list作为变量名,会覆盖Python内置关键字 original_list = [{1: 0.2, 3: 0.1, 5: 0.8}, {6: 0.8, 9: 0.6, 10: 0.7}] sorted_list = [dict(sorted(d.items(), key=lambda item: item[1])) for d in original_list]
逻辑说明:
- 遍历原列表中的每一个字典元素
d - 调用
d.items()取出字典所有键值对元组 sorted方法通过key参数指定排序依据为元组的第二个元素(即字典的value值),默认按升序排列,如需降序可添加参数reverse=True- 排序完成的键值对元组列表重新转换为字典,最终得到排序后的列表
低版本Python兼容方案
如果使用Python 3.7以下版本,替换为OrderedDict即可:
from collections import OrderedDict original_list = [{1: 0.2, 3: 0.1, 5: 0.8}, {6: 0.8, 9: 0.6, 10: 0.7}] sorted_list = [OrderedDict(sorted(d.items(), key=lambda item: item[1])) for d in original_list]
输出验证
打印sorted_list即可得到你需要的结果:[{3: 0.1, 1: 0.2, 5: 0.8}, {9: 0.6, 10: 0.7, 6: 0.8}]
内容的提问来源于stack exchange,提问作者zead seam
相关产品推荐
相关产品推荐

