迭代时将项添加到dict中

时间:2014-03-16 09:04:26

标签: python

在迭代该字典时将项添加到字典有多安全?乍一看它有点起作用,但我想知道是否有可能出现不安全的情况。 键是字符串01等等。

2 个答案:

答案 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'