繁体   English   中英

RuntimeError:OrderedDict在迭代期间发生变异(Python3)

[英]RuntimeError: OrderedDict mutated during iteration (Python3)

获取标题中提到的错误。 下面提到的函数由另一个通过POST api调用的函数调用。

错误在print语句下面的行上。 不知道错误意味着什么以及它为什么会出现。 用于运行一周的相同代码。

def remove_individual_stops(ordered_parkstop_dict, relevant_data):
    new_ordered_parkstop_dict = ordered_parkstop_dict
    for key, value in ordered_parkstop_dict.items():
        if len(value) == 0:
            for k,v in ordered_parkstop_dict.items():
                if key in v:
                    new_ordered_parkstop_dict.pop(key)
        print (type(ordered_parkstop_dict), ordered_parkstop_dict)
        for k,v in ordered_parkstop_dict.items():
            klist = []
            keylist = []
            if value and v:
                if len(v)==1 and len(value)==1:
                    klist.append(k), keylist.append(key)
                if (keylist == v) and (klist == value and len(value) == 1):
                    new_ordered_parkstop_dict.pop(key)
    return new_ordered_parkstop_dict

你为new_ordered_parkstop_dict分配了ordered_parkstop_dict dict的引用,所以当你遍历ordered_parkstop_dict.items()并通过弹出它来改变new_ordered_parkstop_dict时,你也会改变ordered_parkstop_dict ,这是因为你的循环遍历ordered_parkstop_dict而无法完成。

您应该将ordered_parkstop_dict的副本分配给new_ordered_parkstop_dict 更改:

new_ordered_parkstop_dict = ordered_parkstop_dict

至:

new_ordered_parkstop_dict = ordered_parkstop_dict.copy()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM