我检查了所有其他问题都存在相同的错误,但没有找到有用的解决方案 =/
我有一本列表字典:
d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}
其中一些值为空。在创建这些列表结束时,我想在返回我的字典之前删除这些空列表。目前我正在尝试这样做:
for i in d:
if not d[i]:
d.pop(i)
但是,这给了我运行时错误。我知道您在遍历字典时无法在字典中添加/删除元素......那么有什么方法可以解决这个问题?
见 Modifying a Python dict while iterating over it对于这可能导致问题的引用,以及原因。
最佳答案
在 Python 3.x 和 2.x 中,您可以使用 list
强制复制 key :
for i in list(d):
在 Python 2.x 中调用 keys
复制了您可以在修改 dict
时迭代的键:
for i in d.keys():
但请注意,在 Python 3.x 中,第二种方法对您的错误没有帮助,因为 keys
返回一个 view object而不是将键复制到列表中。
关于python - 如何避免 "RuntimeError: dictionary changed size during iteration"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941817/