通过索引引用
dict_keys
、dict_values
或 dict_items
对象的项目会引发类型错误。例如:
> my_dict = {"foo": 0, "bar": 1, "baz": 2}
> my_dict.items()[0]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
----> 1 my_dict.items()[0]
TypeError: 'dict_items' object is not subscriptable
我的问题是不是如何解决这个问题。我知道人们可以在
list()
、tuple()
或 dict_keys
对象上调用 dict_values
或 dict_items
,然后为其添加下标。
我的问题是,既然从 python 3.7.0 开始就保证了字典中项目的顺序,为什么这种行为在 python 中仍然存在。为什么不可能(或不希望)重构 dict_keys
、
dict_values
和 dict_items
类型以使它们可下标?stdlib的文档将这些类型描述为“视图对象”。我想这就是我的问题的答案所在,但我找不到关于“视图对象”实际上是什么的更详细的描述。谁能告诉我这个问题吗?