在迭代该字典时将项添加到字典有多安全?乍一看它有点起作用,但我想知道是否有可能出现不安全的情况。
键是字符串0
,1
等等。
答案 0 :(得分:1)
迭代时无法更改字典大小:
>>> foo = {'spam': 'egg'}
>>> for i in foo:
... foo['egg'] = 'spam'
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
你必须先复制一份:
>>> foo = {'spam': 'egg'}
>>> for i in dict(foo):
... foo['egg'] = 'spam'
...
>>> foo
{'spam': 'egg', 'egg': 'spam'}
答案 1 :(得分:0)
使用items()或keys()方法可以安全地修改dict。 items()返回dict键的副本,值对和keys()返回dict键的副本。
>>> foo = {'spam': 'egg'}
>>> for k, v in foo.items():
... foo['egg'] = 'spam'