我在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声明为列表时,为什么将其视为命令。如何按名称属性对其进行排序?
答案 0 :(得分:2)
Python 2的字典排序顺序为quite involved,并且了解得很少。只是因为Python 2试图使所有东西都可排序而起作用。
对于您的特定情况,对于带有单个键的{'name': ...}
字典,排序由该单个键的值确定。
在Python 3中,字典不再可排序(以及许多其他类型),只需使用该值作为排序键即可:
server_list.sort(key=lambda x: x[0]['name'], reverse=False)