在Python中的List中添加字典,但数据重复[重复]

kd3sttzy  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(102)

此问题在此处已有答案

Changing one dict changes all dicts in a list of dicts [duplicate](1个答案)
7天前关闭

data = []
dic = dict.fromkeys(['a', 'b', 'c'], 0)

value = 1
for i in range(3):
    key = list(dic.keys())
    for j in range(len(dic)):
        dic[key[j]] = value
        value += 1
    data.append(dic)
    
for i in data:
    print(i)

字符串
在这段代码中,我是这样表示的。

{1, 2, 3}
{4, 5, 6}
{7, 8, 9}


但结果是

{7, 8, 9}
{7, 8, 9}
{7, 8, 9}


我如何修复这个代码以获得我期望的结果?

r6hnlfcb

r6hnlfcb1#

你只有一个字典,dic。您已经创建了一个包含三个引用的列表。要获得想要的结果,请更改代码,为主循环的每次迭代创建一个新的字典

daolsyd0

daolsyd02#

而不是:

data.append(dic)

字符串
用途:

data.append(dic.copy())


这将创建一个新对象,而不是向列表中添加对dic的引用。

相关问题