我的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
你知道如何解决这个问题吗?
答案 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
)。