不了解“ for dict in dict”的工作原理

时间:2019-07-30 18:25:15

标签: python dictionary for-loop

我尝试使用for循环更改Python中嵌套字典的键。对于我的11个键的字典来说,它工作正常,但是对于其他16个键的字典,它的表现却很奇怪,在这种情况下,我不了解for循环的行为。

我尝试了dictdatadictdata.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中的键”的行为?

谢谢, 菲利普

0 个答案:

没有答案