Ошибка типа: «<» не поддерживается между экземплярами «dict» и «dict» - PullRequest
0 голосов
/ 15 апреля 2019

У меня была прекрасно работающая сортировка по значению в Python 2.7, но я пытаюсь обновить систему до Python 3.6, и я получаю эту ошибку:

TypeError: '<' не поддерживается между экземплярами 'dict' и'dict' </p>

Вот мой код

server_list = []

for server in res["aggregations"]["hostname"]["buckets"]:
    temp_obj = []
    temp_obj.append({"name":server.key})        
    temp_obj.append({"stat": server["last_log"]["hits"]["hits"][0]["_source"][system].stat})
    server_list.append(temp_obj)
    server_list.sort(key=lambda x: x[0], reverse=False)

Почему это считается диктом, когда я объявляю свой список серверов в качестве списка.Как мне сделать сортировку по атрибуту имени?

1 Ответ

2 голосов
/ 15 апреля 2019

Порядок сортировки словаря Python 2 был довольно сложным и плохо понят.Это сработало только потому, что Python 2 пытался сделать все, что нужно для заказа.

В вашем конкретном случае со {'name': ...} словарями с одним ключом упорядочение определялось значением этого единственного ключа.

В Python 3, где словари больше не предназначены для заказа (вместе со многими другими типами), просто используйте это значение в качестве ключа сортировки:

server_list.sort(key=lambda x: x[0]['name'], reverse=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...