尽管有副本,但变化多变

时间:2017-03-22 08:41:16

标签: python dictionary copy

我为数独求解程序编写了代码并立即追踪错误。有一个功能"插入"应该复制字典" mglwerte"并改变它。但是,尽管在函数的开头使用了copy,函数不仅会更改副本而且会更改原始字典。这是函数的调用:

    print(ebene, ": 748: ", mglwerte["748"], " / 779: ", mglwerte["779"])
    sudokuneu, mglwerteneu, geklappt = insert(int(var[0]), int(var[1]), wert, sudoku, mglwerte)
    print(ebene, ": 748: ", mglwerte["748"], " / 779: ", mglwerte["779"])

功能本身:

def insert(z,s,v,sudokualt,mglwertealt):
    sudoku = sudokualt.copy()
    mglwerte = mglwertealt.copy()
    geschafft = True
    q = 3*int((z-1)/3) + int((s-1)/3) + 1
    keyfull = str(z) + str(s) + str(q)

    if v not in mglwerte[keyfull]:
        print(v, "not in ", keyfull)
        return None, None, False

    sudoku[keyfull] = v
    mglwerte[keyfull] = {}    

    for key,value in mglwerte.items():
        if len(value) > 0:
            if str(key[0]) == str(z) or str(key[1]) == str(s) or str(key[2]) == str(q):
                value.discard(v)
                mglwerte[key] = value
                if len(value) < 1:
                    geschafft = False
    return sudoku, mglwerte, geschafft

第一段代码中的印刷语句告诉我,&#34; mglwerte&#34;在调用函数后更改。我怎么能改变这个?

0 个答案:

没有答案