def taskCompletionCheck(self, jsonFile):
json_data=open(jsonFile)
data = json.load(json_data)
json_data.close()
wsTaskStatus = {}
taskstatus = {}
mydict = {}
''' Assuming the json file structure is similar to
{"tasks":
[{"name":"SA","result":"PASS"},
{"name":"CR","result":"PASS"},
{"name":"UT","result":"fail"}],
"masks":{"id":"valore"},
"om_points":"value",
"parameters":{"id":"valore"}}
'''
for item in data:
keyExists = data[item].get("auto-approve-plugin-status")
if keyExists != None:
for elem in data[item]["auto-approve-plugin-status"] :
mylist = elem["auto-approve-enclosure-names"]
mydict["status"] = elem["auto-approve-status"]
mydict["enclosure-names"] = mylist
taskid = elem["auto-approve-plugin-name"]+"_"+item
taskstatus[taskid] = mydict
print taskstatus
return taskstatus
전역 범위 (for 루프 외부)에서 mydict를 선언하면 taskstatus에는 mylist 값이 포함되지 않고 enclosure-names에는 o 만 포함됩니다. 나중에 루프 내에서 mydict를 움직 였고 정상적으로 작동했습니다. 아무도 나에게 여기서 일어난 일을 설명 할 수 있니?파이썬에서 사전의 범위
원래 버전에서{"CR" : {"status" : "fail" , "enclosure-names" : [a,b,c]},
"UT" : {"status" : "pass" , "enclosure-names" : [d,e]}}
이 코드는 유효하지 않습니다. return 문은 있지만 작동하지 않습니다. 나는 당신에게 문제를주는 정확한 코드를 별도의 파일에 복사하고 코드의 나머지 부분과 독립적으로 실행되도록하는 것이 좋습니다. 실행되면 질문에 다시 복사하십시오. –