Сортировка словарных ключей, где ключ также является словарем - PullRequest
0 голосов
/ 28 июня 2018

У меня просто быстрый вопрос о том, как отсортировать словарь, например:

Что у меня есть:

vehicles = {"carA": {"speed": 20, "color": "red"}, "carB": {"speed": 25, "color": "blue"}}

Мне нужен список, в котором словарь транспортных средств отсортирован по максимальному значению скорости (скорость carB выше, чем carA, поэтому carB является первым в списке):

vehicles_list = [{"carB": {"speed": 25, color: "blue"}}, {"carA": {"speed": 20, color: "red"}}]

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Попробуйте использовать аргумент key встроенной функции sorted

vehicles_list = sorted([{k:v} for k,v in vehicles.items()], 
                       key=lambda x: list(x.values())[0]['speed'],
                       reverse=True)

Примечание Я изменил color в вашем dict, чтобы он был string, если только это не определенный вами тип, это ошибка

0 голосов
/ 28 июня 2018

вы можете сделать что-то вроде следующего:

import operator
list_of_dicts = list(vehicles)
list_of_dicts.sort(key=operator.itemgetter('speed'), reverse=True)

Другое решение

from collections import OrderedDict 
order_dic = list(OrderedDict(sorted(dic.items(), key=lambda x: x[1]['speed'], reverse=True)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...