字典在迭代期间更改大小,在进行深度复制之后,python

问题描述 投票:1回答:1

我有一个列表,我使用Deepcopy复制了。在上面的函数中,我还有另一个列表,该列表也使用深层复制并按预期工作。尽管对于下面的代码,我得到了RuntimeError:词典在迭代过程中更改了大小。不知道为什么会这样,因为我正在复制原始列表,然后在复制的列表上运行修改。数据对象是列表中的字典。


amdcount = 0
with open('amd3.json', 'r') as b:
    data = json.load(b)
    newlist.append(data)

copylist = copy.deepcopy(new_list)
for item in copylist:
    for k in item:
        if k == 'minute':
            item['test'] = 'test'
            print(k, item[k])

上面的代码生成RuntimeError:字典在迭代过程中更改大小。

python dictionary deep-copy
1个回答
1
投票

[当您执行item['test'] = 'test'时,您正在使用item对其进行迭代时正在修改for k in item:词典

您可以使用list(item)复制字典键:

for k in list(item):
    if k == 'minute':
        item['test'] = 'test'
        print(k, item[k])

尚不清楚为什么需要循环。可能只是

if 'minute' in item:
    item['test'] = 'test'
    print('minute', item['minute'])
© www.soinside.com 2019 - 2024. All rights reserved.