Python:按子字典值排序获取字典键列表
我有以下这种结构:
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']