Python:将字典键作为按子字典值排序的列表

时间:2012-02-11 20:51:06

标签: python sorting dictionary

我有以下结构:

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

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

有足够简单的方法吗?

2 个答案:

答案 0 :(得分:9)

list.sort()方法和sorted()内置函数采用key参数,该参数是为每个要排序的项目调用的函数,并且项目已排序基于该键函数的返回值。因此,编写一个函数,该函数在structure中获取一个键并返回您要排序的内容:

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

答案 1 :(得分:7)

您可以使用sorted内置功能。<​​/ p>

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