【发布时间】:2020-10-26 14:41:54
【问题描述】:
这是一个用来交换字典键和值的函数。 {'a': 3} 应该变成 {3: 'a'}。
def change_keys_values(d):
for key in d:
value = d[key]
del d[key]
d[value] = key
return d
我已经意识到这个函数不应该工作,因为我在迭代期间更改了字典键。这是我得到的错误:“迭代期间更改了字典键”。但是,我在三键值对字典上没有收到此错误。因此,虽然{'a': 3, 't': 8, 'r': 2, 'z': 44, 'u': 1, 'b': 4} 导致上述错误,但{'a': 3, 't': 8, 'r': 2} 得到解决而没有任何问题。我正在使用 python 3。这是什么原因造成的?
【问题讨论】:
-
警告:不要修改您正在迭代的集合。
-
我明白了。但是,为什么这对 {'a': 3, 't': 8, 'r': 2} 有效?
-
它将在随机场景中工作,而不是在其他情况下。您需要的是一致的、可预测的工作行为。查看@Miind 的回答
标签: python python-3.x