gpt4 book ai didi

python - 为什么 OrderedDict 没有实现比较运算符

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:01 25 4
gpt4 key购买 nike

今天早些时候我问了一个question因为我无法真正理解使用丰富比较方法的比较运算符的实现。谢谢您对公认的答案很好地解释了两者之间的区别。

基本上,据我了解,Python 3 停止使用 __cmp__() 魔术方法。从现在开始,

The ordering comparison operators (<, <=, >=, >) raise a TypeError exception when the operands don’t have a meaningful natural ordering.

因此,我认为 OrderedDict 是有效的。但是,令我惊讶的是,

d1 = OrderedDict([(1,1)])
d2 = OrderedDict([(2,2)])
>>> dict1 < dict2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'collections.OrderedDict' and 'collections.OrderedDict'
>>> dict1.__lt__(dict2)
NotImplemented

那么,为什么 OrderedDict 没有实现比较运算符?

请注意,在链接问题答案的评论中,我们开始讨论该主题。强调的一件事是,为什么假设插入顺序是您想要比较事物的方式?您始终可以实现自己的方式来显式比较它们。

那为什么(甚至在 Python 3 中),

list1 = [1,2,3]
list2 = [4,5,6]
>>> list1 < list2
True

是不是类似的情况?

最佳答案

“有意义的自然排序”是指一种“自然”的方式来决定两个对象中哪个更大。它不是指对象是否是有序集合。

OrderedDict 可能对其条目强加排序,但两个 OrderedDicts 之间没有自然的排序关系。

关于python - 为什么 OrderedDict 没有实现比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com