我需要在循环中从字典中删除一个k/v对。在得到RuntimeError:dictionary在迭代过程中改变了大小
之后,我在删除k/v后对字典进行了pickle,并在其中一个外循环中尝试重新打开新pickle/更新的字典。然而,正如你们中的许多人可能知道的那样,我会得到同样的错误——我想当它到达循环的顶部时。我没有把字典用在最外层。
所以我的问题是,有人知道如何解决这个问题吗?我想从字典中删除一个k/V对,并在循环的下一次迭代中使用调整大小的字典。
关注问题并使用赛吉尔的解决方案
list=[27,29,23,30,3,5,40]
testDict={}
for x in range(25):
tempDict={}
tempDict[ xsquared ]=x*x
tempDict[ xinverse ]=1.0/(x+1.0)
testDict[(x,x+1)]=tempDict
for item in list:
print the Dictionary now has ,len(testDict.keys()), keys
for key in testDict.keys():
if key[0]==item:
del testDict[key]
我这样做是因为我必须让一些研究助理比较来自两个数据集的一些观察结果,这两个数据集中由于名称变异而无法匹配。这个想法是从一个数据集(比如集合a)中抛出一个名称,然后根据关键字匹配,在另一个数据集中(集合B)找到附加到该关键字的所有名称。一旦确定了匹配,我不想再次显示B的值来加快速度。因为有6000个观察结果,我也不希望每次他们回到工作岗位时都必须从A开始。然而,我可以通过让他们选择输入他们使用的A中的最后一个键来解决这个问题。但一旦确定匹配,我真的需要减少B