【问题标题】:Python 3 dict sort by value inside list of dicts? [closed]Python 3 dict 按字典列表中的值排序? [关闭]
【发布时间】:2020-11-25 21:24:18
【问题描述】:

是否有一种简单的方法可以按键“#1”的值对以下 Python d:dict 进行排序。输出应如 o:dict 中所示? 我希望能够以不同类型的顺序打印,例如带有 asc/desc 键的 html 表格。 我知道如何使用 sorted() 对简单的 key:value 进行排序,但是当值如下所示时,我不知道该怎么做! 我正在使用 CPython 3.9

d:dict = {  'aaa': {'#1': 9,  '#2':34,  '#3': 5},
            'bbb': {'#1': 11, '#2': 15, '#3': 7},
            'ccc': {'#1': 6,  '#2': 3,  '#3': 6} }

o:dict = {  'ccc': {'#1': 6,  '#2': 3,  '#3': 6},
            'aaa': {'#1': 9,  '#2': 34,  '#3': 5},
            'bbb': {'#1': 11, '#2': 15, '#3': 7}   }

【问题讨论】:

  • 这是一个字典。你为什么关心订单? (不同版本的 Python 会不一致)
  • 欢迎来到 SO!你试过什么了?我们在这里更多地帮助解决“我尝试了 X,但它没有达到我的预期,而是导致错误!”形式的特定问题。伴随着Minimal, Complete, and Verifiable example
  • @DeepSpace CPython 字典从 Python 3.6 开始按插入排序,这是受支持的最旧的 Python 版本。
  • @Boris 你的意思是 Python 3.7,但这并不意味着 OP 应该订购现有的字典。
  • @DeepSpace 不,我的意思是 CPython 3.6。它是在 CPython 3.6 中实现的,然后从 Python 3.7 开始成为所有其他 Python 实现所必需的。

标签: python sorting dictionary


【解决方案1】:
d = {  'aaa': {'#1': 9,  '#2':34,  '#3': 5},
       'bbb': {'#1': 11, '#2': 15, '#3': 7},
       'ccc': {'#1': 6,  '#2': 3,  '#3': 6} }

o = dict(sorted(d.items(), key=lambda x: x[1]["#1"]))

【讨论】:

  • 谢谢 Boris .. 我非常接近那个解决方案,但我自己错过了 [1] .. 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多