- 我有一个列表 l。
- 我有一本字典 d。
我想遍历 l。对于任何列表项,我想遍历 d.keys。
如果满足某些条件,我想“更新”我的字典。
我天真地试图嵌套两个 for 循环并放入一个 if 语句——一个人不能改变一个正在迭代的对象的长度。
d = {'this': '1', 'is': '2', 'a': '3', 'list': '4'}
l = ['A', 'B', 'C', 'D', 'E']
for word in l:
for key in d.keys():
if len(key) < 2:#some condition
d.pop(key)
else:
print(word, key)
这是我得到的输出:
A this
A is
Traceback (most recent call last):
File "untitled3.py", line 6, in <module>
for key in d.keys():
RuntimeError: dictionary changed size during iteration
您可以循环遍历一个副本,而不是遍历 d
。
d = {'this': '1', 'is': '2', 'a': '3', 'list': '4'}
l = ['A', 'B', 'C', 'D', 'E']
for word in l:
for key in d.copy().keys(): # Notice the change
if len(key) < 2:#some condition
d.pop(key)
else:
print(word, key)
我是一名优秀的程序员,十分优秀!