相关疑难解决方法(0)

为什么OrderedDict键视图比较顺序不敏感?

为什么OrderedDict键视图比较顺序不敏感?

>>> from collections import OrderedDict
>>> xy = OrderedDict([('x', None), ('y', None)])
>>> yx = OrderedDict([('y', None), ('x', None)])
>>> xy == yx
False
>>> xy.keys() == yx.keys()
True
Run Code Online (Sandbox Code Playgroud)

OrderedDict键视图应该表现得像OrderedSet,但它的行为相同dict.keys(就像通常一样set).

python2中的"问题"相同:

>>> xy.viewkeys() == yx.viewkeys()
True
Run Code Online (Sandbox Code Playgroud)

它们是不同的类型,(odict_keys是子类dict_keys)

>>> type(xy.keys())
odict_keys
>>> type({}.keys())
dict_keys
Run Code Online (Sandbox Code Playgroud)

并且已经存在一个可以轻易使用的顺序敏感键比较,但它显然仅用作对odict丰富比较的后检查.

这是设计决定还是错误?如果这是一个设计决定,我在哪里可以找到理由的讨论?

python ordereddictionary python-3.x python-internals

12
推荐指数
1
解决办法
1718
查看次数