python - 如何按 JSON 的值进行复制?

标签 python json list copy

我需要将数据 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/

相关文章:

python - 属性错误: 'QgsComposition' object has no attribute 'setMapCanvas'

python - django 1.5 更新 ALLOWED_HOSTS 失败 SuspiciousOperation

mysql - 如何使用通配符从mysql查询json数据

json - 在 Swift 中将可选元素附加到 json 数组中

c - C中的大型二维数组

c# - 使用 ToString 构建文件路径列表

python - 替换嵌套数组中的多次出现

python - 如何使用 python simple-salesforce 测试插入/更新是否成功

java - 使用 gson 反序列化内部类返回 null

python - 在 Python 3.4 中打印列表的总和