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

Mar*_*tin 4 python sorting dictionary

我有以下结构:

structure = {
    'pizza': {
        # other fields
        'sorting': 2,
    },
    'burger': {
        # other fields
        'sorting': 3,
    },
    'baguette': {
        # other fields
        'sorting': 1,
    }
}
Run Code Online (Sandbox Code Playgroud)

从这个结构我需要外部字典的键按sorting内部字典的字段排序,所以输出是['baguette', 'pizza', 'burger'].

有一个简单的方法来做到这一点?

Tho*_*ers 9

list.sort()方法和sorted()内置函数取key参数,它是一个这就是所谓的对每个项目进行排序的功能,并且该项目是基于keyfunction的返回值进行排序.因此,编写一个接受键入的函数structure并返回要排序的事物:

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

  • 我没有忘记`.keys()`,没有必要.迭代时,Dicts会生成密钥. (4认同)

Pra*_*ota 7

您可以使用sorted内置功能.

sorted(structure.keys(), key = lambda x: structure[x]['sorting'])
Run Code Online (Sandbox Code Playgroud)