Python Dictionary键不同但值相同

时间:2018-05-30 12:04:51

标签: python arrays dictionary key key-value

我的python字典有问题。我的代码是这样的:

key

最后ARRAY[key]["CELLNAME"]C:\Python36\python.exe C:/PROJELER/PYTHON/KPI/deneme_aa.py LK738825O415479872 LY140715O147613031 LK730215O415479771 LY140715O147613031 LB587325O815408912 LY140715O147613031 LK706735O545513813 LY140715O147613031 L0587425O545492412 LY140715O147613031 LM362625O415488912 LY140715O147613031 LK797135O415481913 LY140715O147613031 LK950525O415486512 LY140715O147613031 值应该相同但不是。

Python给出了如下结果:

Integer

你知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您正在将名为temp的可变字典分配给ARRAY[key],因此您获得的值是temp的最新状态。解决这个问题:

while(cline<rownum):
    temp["CELLNAME"]=source_ws.cell_value(cline+1,3)
    temp["SITENAME"] = source_ws.cell_value(cline + 1, 4)
    temp["LAC"] = source_ws.cell_value(cline + 1, 5)
    temp["CELLID"] = source_ws.cell_value(cline + 1, 6) 
    ARRAY[cell_name] = dict(temp)  # Makes a new copy of `temp`
    cline=cline+1

答案 1 :(得分:0)

如果你写了:

while cline < rownum :
    tmp = source_ws.cell_value(cline+1,3)
    ARRAY[tmp] = {"CELLNAME":tmp}
    cline += 1

ARRAY将是一本字典,例如:

{"QWERTY":{"CELLNAME":"QWERTY"},
 "ASDFGH":{"CELLNAME":"ASDFGH"},
 "ZXCVBN":{"CELLNAME":"ZXCVBN"},
 ...,
 }

但是既然你分配了temp,它会用最新的值重写每一行......

#temp is:  {"CELLNAME":"LASTVAL"} 

{"QWERTY":temp,
 "ASDFGH":temp,
 "ZXCVBN":temp,
 ...,
 }

因此所有值都相同(在此示例中,它将打印LASTVAL)。