[英]Iterating over the values of a python dict and simultaneous update
我想知道如何迭代值並同時更新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)
你太復雜了; 只需在dict.values()
list()
上使用list()
來創建一個副本,並避免RuntimeError: dictionary changed size during iteration
異常RuntimeError: dictionary changed size during iteration
獲取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()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.