迭代过程中字典大小的变化(Dictionary changes size during iterat

2019-10-17 10:25发布

我通过关于这个题目的答案的数据库中查找,找不到答案,基本上是我通过一本字典循环,我发现了,“字典大小的变化,”运行时错误呢我突然跑出一个关键迭代恢复之前和值和插入另一个。

       for patterns in dict_copy.keys():
            new_tuple = ()
            for items in range(len(patterns)):
                if patters[items] not in exclusion:
                    new_tuple += (patterns[items],)
            dict_copy[new_tuple] = dict_copy.get(patterns)
            dict_copy.pop(patterns)

我正在使用的字典的格式为:{( “A”, “B”, “C”, “d”):4,( “B”, “A”, “C”, “d”) “2 ...}我几乎只是混淆了,它认为我chaning字典大小的事实

Answer 1:

该错误是有些误导。 什么它是想告诉你的是,你不应该做,而遍历字典的任何结构变化(插入/缺失)。

一个简单的方法来解决,这是通过将结果到一个单独的词典:

   new_dict = {}
   for patterns in dict_copy.keys():
        new_tuple = ()
        for items in range(len(patterns)):
            if patters[items] not in exclusion:
                new_tuple += (patterns[items],)
        new_dict[new_tuple] = dict_copy.get(patterns)
   dict_copy = new_dict


Answer 2:

我突然跑出一个键和值和迭代简历之前插入另一个。

那不重要。 而迭代它不能更改的数据结构。 Python的迭代器会很困惑( - :这不是字典的大小,但它的内容(这是其他编程语言中以同样的方式太...)。



文章来源: Dictionary changes size during iteration