我需要在循环中从字典中删除 ak/v 对。在RuntimeError: dictionary changed size during iteration
删除 k/v 并在其中一个外部循环中我尝试重新打开新腌制/更新的字典后,我腌制了字典。然而,你们中的许多人可能都知道——我得到了同样的错误——我想当它到达循环的顶部时。我不在最外层循环中使用我的字典。
所以我的问题是——有人知道如何解决这个问题吗?我想从字典中删除 ak/V 对,并在循环的下一次迭代中使用调整大小的字典。
聚焦问题并使用 Cygil 的解决方案
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 的值以加快他们的速度。因为有 6,000 次观察,我也不希望他们每次重新开始工作时都必须从 A 的开头开始。但是,我可以通过让他们选择输入他们使用的 A 中的最后一个键来解决这个问题。但是一旦确定匹配项,我真的需要减少 B