簡體   English   中英

Python創建字典字典結構,嵌套值相同

[英]Python Creating a dictionary of dictionaries structure, nested values are the same

我正在嘗試構建一個可以更改大小並發布到Firebase的數據結構。 我看到的問題是在數據結構的構建過程中。 我編寫了以下代碼:

for i in range(len(results)):
designData = {"Design Flag" : results[i][5],
        "performance" : results[i][6]}
for j in range(len(objectiveNameArray)):
    objectives[objectiveNameArray[j]] = results[i][columnHeaders.index(objectiveNameArray[j])]
designData["objectives"] = copy.copy(objectives)
for k in range(len(variableNameArray)):
    variables[variableNameArray[k]] = results[i][columnHeaders.index(variableNameArray[k])]
designData["variables"] = copy.copy(variables)
for l in range(len(responseNameArray)):
    responses[responseNameArray[l]] = results[i][columnHeaders.index(responseNameArray[l])]
designData["responses"] = copy.copy(responses)
for m in range(len(constraintNameArray)):
    constraintViolated = False
    if constraintNameArray[m][1] == "More than":
        if results[i][columnHeaders.index(constraintNameArray[m][0])] > constraintNameArray[m][2]:
            constraintViolated = True
        else:
            constraintViolated = False
    elif constraintNameArray[m][1] == "Less than":
        if results[i][columnHeaders.index(constraintNameArray[m][0])] < constraintNameArray[m][2]:
            constraintViolated = True
        else:
            constraintViolated = False
    if constraintNameArray[m][0] in constraints:
        if constraints[constraintNameArray[m][0]]["violated"] == True:
            constraintViolated = True
    constraints[constraintNameArray[m][0]] = {"value" : results[i][columnHeaders.index(constraintNameArray[m][0])], "violated" : constraintViolated}
designData["constraints"] = copy.copy(constraints)
data[studyName][results[i][4]] = designData

當我在for循環中包含print(designData)時,我看到我的結果正在按每次循環迭代的預期進行更改。

但是,如果我在for循環之外包括print(data),則會得到一個數據結構,即使鍵名不同,結果數組添加的值對於循環的每次迭代也都是相同的值。

比較print(data)和print(designData)

如果這還不夠信息,我謹此致歉,這是我在Stack上的第一篇文章,因此請耐心等待。

可能是因為您將諸如objectivesvariablesresponses類的variables直接輸入到designData 請嘗試以下操作:

import copy

....
designData['objectives'] = copy.copy(objectives)
....
designData['variables'] = copy.copy(variables)
....
designData['responses'] = copy.copy(responses)

如有類似問題,請參閱復制列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM