python - 字典在迭代过程中改变了大小,在深度复制之后,python

标签 python dictionary deep-copy

我有一个列表,我使用深度复制复制了该列表。在上面的函数中,我有另一个列表,它也使用深度复制并按预期工作。尽管对于下面的代码,我得到了一个 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])

上面的代码生成一个运行时错误:字典在迭代期间改变了大小。

最佳答案

当您执行 item['test'] = 'test' 时,您正在修改 item 字典,同时使用 for k 迭代它在项目中:

您可以使用 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'])

关于python - 字典在迭代过程中改变了大小,在深度复制之后,python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59365368/

相关文章:

python - 删除 Pandas 中每个列名的第一个字符

c# - 循环遍历两个并发字典的 Lambda 表达式

c++ - 在赋值运算符内制作浅拷贝

javascript - jQuery 深度克隆不是递归的

javascript - 为什么以及何时使用 angular.copy? (深拷贝)

python - Windows10 上的 cross_val_score,并行计算错误

python - 如何打开与 Python 2 和 Python 3 兼容的 Tkinter AskOpenFileName 对话框

python - 对 x-y 轴上时间 'n= 1000 steps' 为 't=1' 的一维随机游走进行采样

ios - iPhone map 方向

c++ - C++ 映射中的 C 风格数组