Python 更改字典的键
这是一个简单的练习,可以用不同的方法解决,我只是不知道为什么这不起作用。我从一个字典开始,然后我想把它的键改成大写,但这会引发一个错误------RuntimeError:字典在迭代过程中改变了大小Python 更改字典的键,python,dictionary,Python,Dictionary,这是一个简单的练习,可以用不同的方法解决,我只是不知道为什么这不起作用。我从一个字典开始,然后我想把它的键改成大写,但这会引发一个错误------RuntimeError:字典在迭代过程中改变了大小 semana = {"Lunes": 4, "Martes": 5, "Miercoles": 5, "Jueves": 4, &q
semana = {"Lunes": 4,
"Martes": 5,
"Miercoles": 5,
"Jueves": 4,
"Viernes": 4,
"Sabado": 4,
"Domingo": 4}
for key, value in semana.items():
semana[key.upper()] = value
del semana[key]
问题是您试图在迭代字典时更改它。这会干扰迭代。相反,您需要创建一个新词典。您可以这样做:
new_dict = {}
for key, value in semana.items():
new_dict[key.upper()] = value
您还可以使用理解创建新的dict:
new_dict = {key.upper(): value for key, value in semana.items()}
list(semana.items()):
也应该起作用,因为items()
返回一个视图,但是是的,comp是一种方法。@ggorlen使用原始键而不是大写键创建元组列表。而dict(semana.items())
会复制dict,但它会使用原始键而不是大写键。是的,我说的是保留OP的原始代码,只是在items()
周围添加list()
调用for
循环。这不是一个好的解决方案,但它是解决问题的最简单的方法。@ggorlen哦,明白了-是的,这是有意义的。您正在更改正在迭代的字典。对于键,semana.copy()中的值。items():