为什么字典在 python2 中是可排序的,但在 python3 中却不能?我在文档中找不到它。
Python 3.3.4 (default, Feb 11 2014, 16:14:21)
>>> sorted([{'a':'a'},{'b':'b'}])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: dict() < dict()
vs.
Python 2.7.6 (default, Feb 26 2014, 12:01:28)
>>> sorted([{'a':'a'},{'b':'b'}])
[{'a': 'a'}, {'b': 'b'}
Python 2 使用无证订购,实现为.__cmp__()特殊方法。
这种排序仅在一组有限的用例中才有意义,并且仅存在,因为 Python 2 试图使一切可订购。
蟒蛇3彻底清理了 Python 的排序故事; .__cmp__()
已经消失了,只有实际上具有自然排序的类型(例如数字和字符串)现在支持排序。对于其他一切,您需要明确定义顺序。
字典没有自然排序。如果您确实需要对字典进行排序,则需要定义一个对您的用例有意义的显式顺序。如果这意味着仅比较键,请这样做(例如使用key=sorted
), etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)