python3通过dict值的属性对字典列表进行排序

时间:2018-09-20 06:57:36

标签: python python-3.x sorting dictionary

我有一个这样存储在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.}]

dict的值是具有属性'utilisation'的精美打印对象(总是单个对象);这些是打印中的百分比值。

我想按利用率值对列表进行排序,但是我很难找出如何以pythonic方式访问每个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是访问循环中dict的值所必需的-我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

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

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