Skip to main content
 首页 » 编程设计

python之如何在字典列表中设置不同的值

2025年05月04日14lhb25

尝试向这个字典列表添加不同的值。

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,那么它将隐藏内置内容。