遍历Python字典值并同时更新
我想知道怎么在遍历一个Python字典的值时,同时更新它。为什么下面的代码不管用呢?
for values in First_Dict.values():
if True:
Second_Dict= Function(values)
First_Dict.update(Second_Dict)
其实有办法解决这个问题,不过方法不是特别优雅。这个方法需要用到一个列表和iter()函数。显然,我并不关心字典的键。
tempList = [i for i in First_Dict.values()]
iterator = iter(tempList)
while True:
try:
TempIterator = iterator.next()
except StopIteration:
break
if True:
Second_Dict= Function(values)
for j in Second_Dict.values():
tempList.append(j)
1 个回答
2
你把事情搞得太复杂了;只需要对 dict.values()
使用 list()
就能创建一个副本,这样就可以避免出现 RuntimeError: dictionary changed size during iteration
的错误:
for value in list(First_Dict.values()):
if True:
First_Dict.update(Second_Dict)
如果你需要一个动态增长的列表,先把列表存起来,然后再循环:
values = list(First_dict.values())
for value in values:
if True:
values.extend(Second_Dict.values())
当然,这样做不会更新原来的字典,只是扩展了 values
列表。
这假设你使用的是 Python 3;在 Python 2 中,dict.values()
已经返回一个列表副本,而不是字典视图;你可以直接使用 values = First_dict.values()
。