Python创建字典的字典结构,嵌套的值是sam

2024-09-29 19:27:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个可以改变大小并发布到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

当我将print(designData)包含在for循环中时,我发现我的结果在每个循环迭代中都会发生预期的变化

但是,如果在for循环之外包含print(数据),则会得到一个数据结构,其中results数组添加的值对于循环的每次迭代都是相同的值,即使键不同

Comparing print(data) and print(designData)

我提前道歉,如果这是不够的信息,这是我在堆栈上的第一篇文章,所以请耐心等待我


Tags: intrueforindexlenifrangeresults
1条回答
网友
1楼 · 发布于 2024-09-29 19:27:56

这可能是因为您将objectivesvariablesresponses等变量直接放入designData。请尝试以下操作:

import copy

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

有关类似的问题,请参见copy a list

相关问题 更多 >

    热门问题