为什么 `dict_keys`、`dict_values` 和 `dict_items` 不可订阅?

问题描述 投票:0回答:1

通过索引引用

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

的文档将这些类型描述为“视图对象”。我想这就是我的问题的答案所在,但我找不到关于“视图对象”实际上是什么的更详细的描述。谁能告诉我这个问题吗?

python python-3.x dictview
1个回答
0
投票

© www.soinside.com 2019 - 2024. All rights reserved.