gpt4 book ai didi

python - 为什么向字典中的集合添加一个元素,所有集合都会被修改? (Python)

转载 作者:行者123 更新时间:2023-12-01 05:02:46 25 4
gpt4 key购买 nike

我正在尝试将元素添加到 Python 字典中的集合中,但是当我使用 mydictionary[index].update([newelement]) 时,所有字典都将使用新元素进行更新。下面是 python 控制台命令和输出来演示我所说的内容:

>>> graph=dict.fromkeys(range(10),set([]))
>>> graph
{0: set([]), 1: set([]), 2: set([]), 3: set([]), 4: set([]), 5: set([]), 6: set([]), 7: set([]), 8: set([]), 9: set([])}
>>> graph[0].update([1])
>>> graph
{0: set([1]), 1: set([1]), 2: set([1]), 3: set([1]), 4: set([1]), 5: set([1]), 6: set([1]), 7: set([1]), 8: set([1]), 9: set([1])}

那么为什么不只更新 graph[0] 的条目?

我确实尝试专门针对这个问题找到一个主题,但没有找到。

Obs:括号中带数字的是python控制台中的命令。

最佳答案

dict.fromkeys 使用您放入的第一个项目中的键和第二个元素的值创建一个字典。换句话说,所有值都引用同一个对象。

这与以下情况相同:

a = set()
b = a
b.add('foo')
print a

在本例中,您将看到 ab 都有一个元素 'foo'。现在看看他们的 ID:

print id(a)
print id(b)

请注意,它们是相同的数字,因为它们是同一个对象。

关于python - 为什么向字典中的集合添加一个元素,所有集合都会被修改? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705811/

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