gpt4 book ai didi

python - 我删除了我的字典,但我的 dict_keys 不介意,这是为什么?

转载 作者:太空狗 更新时间:2023-10-30 00:29:12 26 4
gpt4 key购买 nike

由于 dict.keys(以及 dict.itemsdict.values 类似)返回字典对象的 View ,我假设删除生成它们的字典实际上会对我们从中获取它们的 dict_keys 产生影响。

用一个简单的字典和它的键:

d = {i:i for i in range(20)}
k = d.keys() # similarly with d.values and d.items

显然,情况并非如此:

del d
i = iter(k)
list(i) # works fine and prints the keys

有人知道为什么会这样吗?

最佳答案

del d 删除变量 d,但它所引用的对象将继续存在,如果还有其他引用资料。你不需要字典 View 来观察这个:

>>> d = {i:i for i in range(5)}
>>> dd = d
>>> d['x'] = 'x'
>>> del d
>>> d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
>>> dd
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 'x': 'x'}

(d['x']='x' 行表明 dd=d 复制字典本身,它仅作额外引用。)

还对比了 clear 的行为,它修改了实际对象:

>>> d = {i:i for i in range(5)}
>>> k = d.keys()
>>> del d
>>> list(k)
[0, 1, 2, 3, 4]

>>> d = {i:i for i in range(5)}
>>> k = d.keys()
>>> d.clear()
>>> list(k)
[]

关于python - 我删除了我的字典,但我的 dict_keys 不介意,这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42161614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com