gpt4 book ai didi

python - python 中字典列表的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 20:10:13 25 4
gpt4 key购买 nike

这是对列表执行操作的简单代码:

>>> a = [0] * 5
>>> a
[0, 0, 0, 0, 0]
>>> a[0] = 5
>>> a
[5, 0, 0, 0, 0]
>>>

暂时没有异常。

现在,我尝试对字典列表而不是整数列表执行相同的操作:

>>> a = [{}] * 5
>>> a
[{}, {}, {}, {}, {}]
>>> a[0]['b'] = 4
>>> a
[{'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}]
>>>

我不明白为什么我的列表中的所有元素都被修改了...

谁能告诉我为什么?并提供解决方法?

最佳答案

这并不奇怪。


解决方法:

a = [{} for i in xrange(5)]

[…] * 5 创建一个 和一个指向这个 的五个指针的列表。

0 是一个不可变的整数。您不能修改它,只能将其替换为另一个整数(例如 a[0] = 5)。那么它是一个不同的整数。

{} 是一个可变字典。您正在修改它:a[0]['b'] = 4。它总是同一个字典。

关于python - python 中字典列表的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8602963/

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