gpt4 book ai didi

Python 在迭代过程中就地修改字典条目

转载 作者:行者123 更新时间:2023-11-30 22:07:56 25 4
gpt4 key购买 nike

我知道在一般情况下,在迭代字典时改变它是不安全的:

d = {1: 2, 3: 4}
for k in d.keys():
d[k + 1] = d[k] + 1

这会产生预期的RuntimeError。然而,在阅读documentation for dict时,我发现了以下内容(强调我的):

Iterating views while adding or deleting entries in the dictionary may raise a RuntimeError or fail to iterate over all entries.

所以我尝试了以下代码:

d = {1: 2, 3: 4}
for k in d.keys():
d[k] = d[k] + 1

注意:我在迭代期间没有添加或删除任何条目;我只更新了现有条目。我已经尝试了几个示例,到目前为止还没有收到 RuntimeError,并且循环按预期工作。

这可以通过语言保证工作吗?或者到目前为止我只是运气好?

注意:我使用的是 Python 3,因此 d.keys() 返回动态 View 而不是列表。

最佳答案

字典的内部结构是由键决定的,而不是由值决定的。至少目前是这样。这意味着您可以修改与键关联的值,但添加或删除键(第一个示例的 d[k + 1] = d[k] + 1 就是这样做的)会导致问题。

关于Python 在迭代过程中就地修改字典条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com