簡體   English   中英

迭代python dict的值並同時更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM