Python:强制在for循环中复制字典中的值

Python:强制在for循环中复制字典中的值,python,Python,这是我的密码: sig={“params”:{“weight_curr”:{“1M”:25,“3M”:60},“weight_rv”:{“1M”:0.25,“3M”:0.6}} res=[] tmp={“期限”:“,”字段”:“,”信号参数“:{“权重当前”:0,“权重rv”:0}” 对于[“1M”、“3M”中的期限: tmp[“期限”]=期限 tmp[“信号参数”][“权重当前”]=sig[“参数”][“权重当前”][期限] tmp[“信号参数”][“重量rv”]=sig[“参数”][“重量r

这是我的密码:

sig={“params”:{“weight_curr”:{“1M”:25,“3M”:60},“weight_rv”:{“1M”:0.25,“3M”:0.6}}
res=[]
tmp={“期限”:“,”字段”:“,”信号参数“:{“权重当前”:0,“权重rv”:0}”
对于[“1M”、“3M”中的期限:
tmp[“期限”]=期限
tmp[“信号参数”][“权重当前”]=sig[“参数”][“权重当前”][期限]
tmp[“信号参数”][“重量rv”]=sig[“参数”][“重量rv”][期限]
对于[“a”,“b”]中的字段:
tmp[“field”]=field.upper()
res.append(tmp.copy())
打印(res)
我初始化了一个临时字典
tmp
,然后在随后的
for
循环中用不同的值填充它,并将其副本添加到我的结果
res

我的结果数组中的字符串是正确的,但浮点数不是。结果数组中的所有字典都具有相同的
weight\u curr
weight\u rv
与最后一个
期限的值相匹配。
我认为通过执行
tmp.copy()
添加到数组中可以解决这个问题


我在这里遗漏了什么?

您可以使用它来制作嵌套结构的完整副本。

先创建副本怎么样:

sig = {"params":{"weight_curr":{"1M":25, "3M":60}, "weight_rv":{"1M":0.25, "3M":0.6}}}
res= []
tmp = {"tenor": "", "field": "", "signal_parameters":{"weight_curr":0, "weight_rv":0}}
for tenor in ["1M","3M"]:
    tmp["tenor"] = tenor
    tmp["signal_parameters"]["weight_curr"] = sig["params"]["weight_curr"][tenor]
    tmp["signal_parameters"]["weight_rv"] = sig["params"]["weight_rv"][tenor]
    for field in ["a","b"]:
        tmp_copy = tmp.copy()
        tmp_copy["field"] = field.upper()
        res.append(tmp_copy)
print(res)
要求您显示预期输出