【发布时间】:2019-06-24 13:30:17
【问题描述】:
我的 Python 代码如下所示:
import random
import copy
symbols = set('ABC')
values = dict.fromkeys(symbols, [])
for i in range(5):
value = random.randint(1, 100)
if value % 3 == 0:
values['A'].append(copy.deepcopy(value))
elif value % 3 == 1:
values['B'].append(copy.deepcopy(value))
else:
values['C'].append(copy.deepcopy(value))
print(values)
> {'B': [19, 31, 73, 9, 9], 'A': [19, 31, 73, 9, 9], 'C': [19, 31, 73, 9, 9]}
我希望字典的每个属性都有不同的元素列表,但是我得到的最终结果是它们都具有相同的数字(如上所示)。尽管我使用deepcopy 复制元素,为什么会发生这种情况?我该如何解决这个问题?
【问题讨论】:
-
您的问题不在于
value(无论如何它是不可变的),而在于fromkeys中的默认值。 -
@MikeScotty 感谢您的指点。