我需要将数据 JSON 附加到更大 JSON 中的数据列表中,但我通过引用获得了副本,但我需要通过值获得副本,这是我的代码:
dataJS = {}
dataJS['data'] = []
data = {}
for d in res:
data['ver'] = d[0]
data['exp'] = "{\"DT\": \"1344\", \"Vl\": 757}"
print("data : ", data )
dataJS['data'].append(data)
print("\n\n")
for i in dataJS['data']:
print("JsData : ", i)
print("\n\n")
我的结果是:
data : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 1}
data : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 5}
data : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 6}
data : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 9}
data : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
JsData : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
JsData : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
JsData : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
JsData : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
JsData : {'exp': '{"DT": "1344", "Vl": 757}', 'ver': 12}
任何帮助!谢谢
最佳答案
问题是您在循环之前创建一个 data
字典,并继续覆盖它的值并将其附加到列表中。这里的关键点是,它是附加到列表中的同一个字典 - 在Python中,赋值永远不会创建对象的新副本(无论它是什么类型) 。 There's a very good article about this here我强烈建议您花几分钟阅读它(并在 python shell 中进行实验),以便了解 python 的“变量”与最常见的 C 风格变量有何不同。
就您而言,解决方案很明显:在每次迭代时创建一个新的 data
字典,即:
dataJS = {'data': []}
for d in res:
data = {
'ver': d[0],
'exp': '{"DT": "1344", "Vl": 757}'
}
dataJS["data"].append(data)
关于python - 如何按 JSON 的值进行复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052489/