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

4 投票
2 回答
3606 浏览
提问于 2025-04-17 12:51

我有以下这种结构:

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

从这个结构中,我需要根据内部字典的sorting字段来对外部字典的键进行排序,所以输出结果是['baguette', 'pizza', 'burger']

有没有简单的方法可以做到这一点呢?

2 个回答

7

你可以使用内置的 sorted 函数。

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

list.sort() 方法和内置的 sorted() 函数都有一个 key 参数,这个参数是一个函数,会对每个需要排序的项目进行调用,然后根据这个函数返回的结果来进行排序。所以,你需要写一个函数,这个函数接收一个 structure,并返回你想要排序的内容:

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

撰写回答