python3 .6 下 报错 RuntimeError: dictionary changed size during iteration

时间:2025-04-12 14:20:03

循环字典键值,删除不符合要求的键值对

def createTree(dataSet, minSup=1): #create FP-tree from dataset but don't mine
    headerTable = {}
    #go over dataSet twice
    for trans in dataSet:#first pass counts frequency of occurance
        for item in trans:
            headerTable[item] = (item, 0) + dataSet[trans]
    for k in ():  #此行报错=========================
        if headerTable[k] < minSup: 
            del(headerTable[k])
    freqItemSet = set(())
    #print('freqItemSet: ',freqItemSet)
    if len(freqItemSet) == 0: return None, None  #if no items meet min support -->get out
    for k in headerTable:
        headerTable[k] = [headerTable[k], None] #reformat headerTable to use Node link 
    #print('headerTable: ',headerTable)
    retTree = treeNode('Null Set', 1, None) #create tree

报错如此下:

    for k in headerTable.keys():  #remove items not meeting minSup
RuntimeError: dictionary changed size during iteration

解决方式:
做如下替换。。

for k in list(()):  #此行报错=========================
        if headerTable[k] < minSup: 
            del(headerTable[k])