【发布时间】:2019-02-06 09:53:41
【问题描述】:
我正在尝试测试以下内容:
在 Python 2.x 中,排序工作正常:
>>> sorted([{'callme': 'voyaps-ai-job', 'breakme': 'folld-qy'}, {'callme': 'mixerjui', 'breakme': 'folld-ry'}, {'callme': 'voyaps-ml-jobs', 'breakme': 'folld-uy'}])
[{'breakme': 'folld-qy', 'callme': 'voyaps-ai-job'}, {'breakme': 'folld-ry', 'callme': 'mixerjui'}, {'breakme': 'folld-uy', 'callme': 'voyaps-ml-jobs'}]
在 3.X 中这会中断
>>> sorted([{'callme': 'voyaps-ai-job', 'breakme': 'folld-qy'}, {'callme': 'mixerjui', 'breakme': 'folld-ry'}, {'callme': 'voyaps-ml-jobs', 'breakme': 'folld-uy'}])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'dict' and 'dict'
即我不能对这种数据调用 sorted。我该怎么做才能做到这一点?
【问题讨论】:
-
您可以传递
key来表明您希望这些对象如何排序。 -
Python 3 字典有一些细微的差别,就像 Suraj 添加的链接一样。 Python 2 试图让所有东西都可以排序,Python 3 默认只支持对数字和字符串排序,否则你必须提供你希望排序工作的方式,比如
sorted(mydict, key=lambda x:sorted(x.keys()))跨度>
标签: python python-3.x