如何更新下面列表python中的每个字典键值

时间:2015-08-09 11:58:01

标签: python list dictionary

我正在python列表中创建一个字典。

>>> my_dict=[dict()]*2 
>>> my_dict[0]['name']='TAMIL'
>>> my_dict[0]
{'name': 'TAMIL'}
>>> my_dict
[{'name': 'TAMIL'}, {'name': 'TAMIL'}]

它以my_dict[1]['name']的相同值更新my_dict[0]['name']如何避免这种情况,在我的情况下我想要 访问和更新每个字典键。

2 个答案:

答案 0 :(得分:1)

您正在为同一个对象而不是两个不同的对象创建两个引用,使用range来实际创建n个不同的词组:

my_dict=[{} for _ in range(2)]

正如我之前提到的那样my_dict=[dict()]*2创建引用同一个对象my_dict[0] is my_dict[1]

n [2]: my_dict = [dict()] * 2  
In [3]: id(my_dict[0])
Out[3]: 140220584402056

In [4]: id(my_dict[1]) # same id, same object
Out[4]: 140220584402056

In [5]: my_dict=[{} for _ in range(2)]

In [6]: id(my_dict[0]) 
Out[6]: 140220898678728

In [7]: id(my_dict[1]) # different id, different object
Out[7]: 140220579542088

答案 1 :(得分:-1)

你最好这样做: my_dict [0] = {'name':'Tamil'}

这只更新字典中的第一个元素。另一个人将是空的。

编辑**

以上答案解释了一件我不知道的重要事情。所以绝对是更好的答案。我给了这个,因为它似乎解决了你的问题:

>>> my_dict=[dict()]*2
>>> my_dict
[{}, {}]
>>> my_dict[0]= {'name':'Tamil'}
>>> my_dict
[{'name': 'Tamil'}, {}]