遍历Python字典值并同时更新

0 投票
1 回答
965 浏览
提问于 2025-04-18 00:43

我想知道怎么在遍历一个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()

撰写回答