尝试向这个字典列表添加不同的值。
empty_dict={'time':0, 'value':None}
dict=[empty_dict for i3 in range(5)]
print dict
O/P:
[{'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}]
当我设置它时
for i,i_val in enumerate(dict):
dict[i]['value']=i
print dict
O/P: [{'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}]
^发生这种情况时,所有值都采用最后设置的值。
我想要的输出是
[{'value': 0, 'time': 0}, {'value': 1, 'time': 0}, {'value': 2, 'time': 0}, {'value': 3, 'time': 0}, {'value': 4, 'time': 0}]
我知道我的赋值方式存在一些问题。
我做错了什么?我如何实现我想要的输出?
请您参考如下方法:
问题是这些字典中的每一个都引用同一个对象。
您需要创建一个 empty_dict 的副本。您可以使用字典构造函数来执行此操作。它采用另一个字典(在本例中为您的 empty_dict)作为参数并返回一个新字典。
empty_dict = {'time':0, 'value':None}
my_dicts = [dict(empty_dict) for i3 in range(5)]
此外,如果您将字典命名为 dict,那么它将隐藏内置内容。
