Python: получить ключи словаря в виде списка, отсортированного по значению под словаря - PullRequest
4 голосов
/ 12 февраля 2012

У меня есть следующая структура:

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

Из этой структуры мне нужны ключи внешнего словаря, отсортированные по полю sorting внутреннего словаря, поэтому на выходе получается ['baguette', 'pizza', 'burger'].

Есть ли достаточно простой способ сделать это?

Ответы [ 2 ]

9 голосов
/ 12 февраля 2012

Метод list.sort() и встроенная функция sorted() принимают аргумент key, который является функцией, вызываемой для каждого сортируемого элемента, и элемент сортируется на основе значения возврата этой ключевой функции. Итак, напишите функцию, которая берет ключ в structure и возвращает то, что вы хотите отсортировать:

>>> def keyfunc(k):
...     return structure[k]['sorting']
...
>>> sorted(structure, key=keyfunc)
['baguettes', 'pizza', 'burger']
7 голосов
/ 12 февраля 2012

Вы можете использовать встроенную функцию sorted.

sorted(structure.keys(), key = lambda x: structure[x]['sorting'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...