提问人:shx2 提问时间:4/26/2020 最后编辑:DeepSpaceshx2 更新时间:4/26/2020 访问量:97
OrderedDict 比较不一致
OrderedDict comparison inconsistency
问:
我注意到 s 和 s 之间的关系存在这种惊人的不一致。从文档中:dict
OrderedDict
OrderedDict 对象之间的相等性测试是顺序敏感的,并且实现为 .对象和其他 Mapping 对象之间的相等性测试与常规字典一样不区分顺序。这允许在使用常规字典的任何位置替换对象。
list(od1.items())==list(od2.items())
OrderedDict
OrderedDict
这是一个问题,因为它违反了相等的传递属性,如下所示。
我的问题:这是否有充分的理由(除了“......允许替换 OrderedDict 对象...“)?有没有其他标准的 python 类型违反了相等的传递属性?
以下测试都应该是等效的,但它们不是:
od1 = OrderedDict([(1,1), (2,2)])
od2 = OrderedDict([(2,2), (1,1)])
d = dict(od1)
d == od1 == od2 # False
od1 == d == od2 # True ...
od1 == od2 == d # False
在我看来,应该是这样:
集合是有序的,即顺序是其值的一部分,在这种情况下,不应定义与无序的比较(与将 a 与 a 进行比较相同
dict
list
set
)集合未排序,在这种情况下。该顺序仍可保持迭代,但不被视为值的一部分。
od1==od2
答: 暂无答案
评论
OrderedDict
dict
OrderedDict
OrderedDict
list(od1.items())==list(od2.items())