Сортировать объекты словаря Python в списке - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь отсортировать список, используя словарные ключи в порядке возрастания.

Вы можете использовать только один ключ на уровень словаря.

Введите:

res = [{'hi': {'abc': 5}}, {'bye': {'def': 5}}, {'hi': {'cba': 5}}]

Мой код:

def getitem (item):
    return (item.keys())

print (sorted(res, key = getitem))

Требуемый вывод:

[{'bye': {'def': 5}}, {'hi': {'abc': 5}}, {'hi': {'cba': 5}}]

1 Ответ

2 голосов
/ 21 июня 2019

Вы близки - просто передайте диктовку в iter(), чтобы создать итератор, затем запросите элемент next() в итераторе. Это сортирует по первому ключу в dict, если существует несколько (дикты Python 3.6+ упорядочены по времени вставки). Компаратор может вернуть кортеж с относительным приоритетом, позволяя сортировать внутренний ключ, если внешние ключи равны.

res = [{'hi': {'abc': 5}}, {'bye': {'def': 5}}, {'hi': {'cba': 5}}]

def compare(d):
    outer = next(iter(d))
    return outer, next(iter(d[outer]))

print(sorted(res, key=compare))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...