如何避免“ RuntimeError:字典在迭代过程中更改大小”错误?

发布于 2021-01-29 15:00:09

我已经检查了所有其他问题,并发现了相同的错误,但没有找到有帮助的解决方案= /

我有一个字典列表:

d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}

其中某些值为空。创建这些列表结束时,我想在返回字典之前删除这些空列表。当前,我正在尝试执行以下操作:

for i in d:
    if not d[i]:
        d.pop(i)

但是,这给了我运行时错误。我知道您无法在字典中进行迭代时添加/删除字典中的元素…那么解决这个问题的方法是什么?

关注者
0
被浏览
89
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在Python 2.x中,调用keys会生成密钥的副本,您可以在修改时进行迭代dict

    for i in d.keys():
    

    请注意,这在Python 3.x中不起作用,因为它keys返回迭代器而不是列表。

    另一种方法是用来list强制复制密钥。这个也可以在Python 3.x中使用:

    for i in list(d):
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看