我尝试使用for循环更改Python中嵌套字典的键。对于我的11个键的字典来说,它工作正常,但是对于其他16个键的字典,它的表现却很奇怪,在这种情况下,我不了解for循环的行为。
我尝试了dictdata
和dictdata.keys()
,但它们都不起作用。
我的字典是这样构造的(显然有更多的名字):
dictdata = {
"Name1": {"Platz": 1,"Teamwert": 178.8,"Punkte GES": 1264},
"Name2": {"Platz": 2,"Teamwert": 140.6,"Punkte GES": 1010}}
...
我想用从列表中读取的ID(玩家ID)替换每个字典中每个键的“ Name1”,如下所示:
[['00001', 'Name1'], ['00002', 'Name2'], ...]
我的for循环如下所示,函数index2d给出了用户名在列表中的位置。
for key in dictdata.keys():
username = key
location = index2d(playerIDs,username)
ID = playerIDs[location[0]][0]
dictdata[ID] = dictdata.pop(key)
return dictdata
我期望的是一本字典,其中所有名称都用ID替换。这对我的第一个字典(11个键)效果很好,但对我的第二个字典(16个键)却效果不佳。
通过查看我认识到的每个循环的变量,对于前6个循环,“键”分别是“ Name1”,“ Name2” ...,然后循环跳过我字典的后6个键,因此第七个循环使用key =“ Name13”直到字典结束。但是,循环并没有立即停止,而是继续执行并获取了已更改的键(现在称为“ 00001” ...),并再次用相同的ID替换它们。最多进行33次迭代,然后停止。
我知道这是一个特定的情况,但我不知道如何更一般地使用它,并且真的不了解这里的循环,尤其是因为第一个dict工作正常。 因此,也许有人看到我在这里做错了,还是可以解释我的案例中“ for dict中的键”的行为?
谢谢, 菲利普