Python:按子字典值排序获取字典键的列表

4

我有以下结构:

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

我需要按照内部字典的 sorting 字段对外部字典的键进行排序,因此输出结果应为['baguette', 'pizza', 'burger']

有没有一种简单的方法可以实现这个目标?

2个回答

9
list.sort()方法和sorted()内置函数都可以接受一个key参数,该参数是一个函数,用于每个要排序的项目,根据该函数的返回值对项目进行排序。因此,编写一个函数,它接受structure中的键,并返回您想要排序的内容:
>>> def keyfunc(k):
...     return structure[k]['sorting']
...
>>> sorted(structure, key=keyfunc)
['baguettes', 'pizza', 'burger']

4
我不会忘记 .keys(),但它并非必需。字典在迭代时会返回键。 - Thomas Wouters

7
你可以使用内置函数sorted
sorted(structure.keys(), key = lambda x: structure[x]['sorting'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接