【问题标题】:Python: Get dictionary keys as list sorted by sub dictionary valuePython:获取字典键作为按子字典值排序的列表
【发布时间】:2026-02-10 09:05:02
【问题描述】:

我有以下结构:

structure = {
    'pizza': {
        # other fields
        'sorting': 2,
    },
    'burger': {
        # other fields
        'sorting': 3,
    },
    'baguette': {
        # other fields
        'sorting': 1,
    }
}

从这个结构中,我需要按内部字典的sorting 字段排序的外部字典的键,因此输出为['baguette', 'pizza', 'burger']

有没有足够简单的方法来做到这一点?

【问题讨论】:

    标签: python sorting dictionary


    【解决方案1】:

    您可以使用sorted 内置函数。

    sorted(structure.keys(), key = lambda x: structure[x]['sorting'])
    

    【讨论】:

      【解决方案2】:

      list.sort() 方法和sorted() 内置函数采用key 参数,该参数是为要排序的每个项目调用的函数,并且项目根据该键函数的返回值进行排序。所以,写一个函数,它接受structure 中的一个键并返回你想要排序的东西:

      >>> def keyfunc(k):
      ...     return structure[k]['sorting']
      ...
      >>> sorted(structure, key=keyfunc)
      ['baguettes', 'pizza', 'burger']
      

      【讨论】:

      • 我没有忘记.keys(),没必要。迭代它们时,字典会产生键。