Сортировка словаря, имеющего список в python - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть python словарь, мой код ниже

d = {
 'r_18': {'text': u'INCOMET', 'center': [195.24393963813782, 521.3750743865967]},
'r_19': {'text': u'759R', 'center': [620.7350377559662, 1517.1044731140137]}
}

sorted_x = sorted(d.items(),key=lambda kv: kv[1], reverse=False)
sorted_dict = collections.OrderedDict(sorted_x)
print(sorted_dict)

Мне нужен заказ, основанный на первом и втором значении списка, который должен быть упорядочен. ie, оба значения, содержащие список, должны быть упорядочены как

текстовое значение в порядке, основанном на упорядоченном значении сначала y, а затем x списка

Ошибка, которую я получил, Ошибка типа: <<не поддерживается между экземплярами dict и dict </p>

1 Ответ

0 голосов
/ 14 февраля 2020

Каждый элемент d.items() представляет собой пару (key, dict), поэтому, если вы хотите использовать список для сортировки, вам нужно получить к нему доступ и проиндексировать его в диктовке.
Например, если вы хотите отсортировать по (y,x) тогда код становится:

>>> sorted_x = sorted(d.items(),key=lambda kv: (kv[1]['center'][1],kv[1]['center'][0]) , reverse=False)
>>> sorted_dict = collections.OrderedDict(sorted_x)
OrderedDict([('r_18', {'text': 'INCOMET', 'center': [195.24393963813782, 521.3750743865967]}), ('r_19', {'text': '759R', 'center': [620.7350377559662, 1517.1044731140137]})])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...