代码之家  ›  专栏  ›  技术社区  ›  jake77

python3根据dict值的属性对字典列表进行排序

  •  -2
  • jake77  · 技术社区  · 7 年前

    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的值是打印得很好的对象(总是一个对象),具有“利用率”属性;这些是打印中的百分比值。

    我想让列表按使用值排序,但我很难找到如何以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 回复  |  直到 7 年前
        1
  •  1
  •   user2390182    7 年前

    假设在每个 dict ,您可以尝试:

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

    这将按顺序对dict列表进行排序 utilisation 它们各自的第一个(也是唯一的)值的属性。