Почему вид клавиш 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
В представлении "OrderedDict" должно, по-видимому, вести себя как OrderedSet, но вместо этого оно ведет себя так же, как dict.keys
(т.е. как обычный set
).
Такая же проблема в python2:
>>> xy.viewkeys() == yx.viewkeys()
True
Это разные типы, (odict_keys
является подклассом dict_keys
)
>>> type(xy.keys())
odict_keys
>>> type({}.keys())
dict_keys
И уже доступно доступное для клиентов сравнение ключей, которое они могли бы использовать тривиально, но, по-видимому, он использовался только как post-check для сравнения с богатым опытом.
Это дизайнерское решение или ошибка? Если это дизайнерское решение, где я могу найти обоснование?