首页 > 解决方案 > python3按字典值的属性对字典列表进行排序

问题描述

我有一个存储在part_results这样的字典列表:

[{'Pad': FAILED! 69% Pad in BF1, serf = 12.06 ≤ 17.4.}, 
 {'Pipe': FAILED! 196% Pipe in BF1, pmax = 205.38 ≤ f_pipe_ = 104.67 MPa.},
 {'Foot plate': FAILED! 89% Foot plate in BF1, serf = 34.90 ≤ 39.1.}]

dicts 的值是具有“利用率”属性的精美打印对象(始终是单个对象);这些是打印中的百分比值。

我想让列表按利用率值排序,但我很难找出如何以 Python 方式访问每个 dict 的值。

输出将是

[{'Pipe': FAILED! 196% Pipe in BF1, pmax = 205.38 ≤ f_pipe_ = 104.67 MPa.},
 {'Foot plate': FAILED! 89% Foot plate in BF1, serf = 34.90 ≤ 39.1.},
 {'Pad': FAILED! 69% Pad in BF1, serf = 12.06 ≤ 17.4.}]

我的第一次尝试是这样的

sorted(part_results, key=lambda x: part_results)

这显然不是我想要的:它将按 dict 键排序。我知道,实现这一点不需要排序键,但是 lambda 是访问循环内字典的值所必需的 - 我该怎么做?

标签: pythonpython-3.xsortingdictionary

解决方案


鉴于每个 中始终有一个键值对dict,您可以尝试:

sorted(part_results, key=lambda d: list(d.values())[0].utilisation)

utilisation这会根据它们各自的第一个(也是唯一的)值的属性对字典列表进行排序。


推荐阅读