我想知道如何迭代值并同时更新python的dict。为什么以下代码不起作用?
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)
答案 0 :(得分:2)
你太复杂了;只需在list()
上使用dict.values()
即可创建副本并避免获取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()
。