TypeError:“ dict”和“ dict”的实例之间不支持“ <”

时间:2019-04-15 18:44:11

标签: python-3.x sorting

我在python 2.7中具有按值排序的功能,但是我正尝试升级到python 3.6并收到该错误:

TypeError:“ dict”和“ dict”的实例之间不支持“ <”

这是我的代码

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)

当我将server_list声明为列表时,为什么将其视为命令。如何按名称属性对其进行排序?

1 个答案:

答案 0 :(得分:2)

Python 2的字典排序顺序为quite involved,并且了解得很少。只是因为Python 2试图使所有东西都可排序而起作用。

对于您的特定情况,对于带有单个键的{'name': ...}字典,排序由该单个键的值确定。

在Python 3中,字典不再可排序(以及许多其他类型),只需使用该值作为排序键即可:

server_list.sort(key=lambda x: x[0]['name'], reverse=False)