字典中的更新是覆盖python中的键值对

问题描述 投票:-1回答:2

我想创建一个字典,使其包含另一个键值对。在字典中使用更新方法时,它会覆盖旧密钥,值对。

import yaml

d1={}
l1=[]
d2={}

with open("testspec.yaml","r") as stream:
    d1.update(yaml.load(stream))

l1=d1['TestSpec'].keys()
print(l1)
for i in l1:
    #d2[i]='None'
    for key,value in d1['TestSpec'][i].items():
        if "STEP" in key:
            d2.update({i : {key :value}})      
            #print(d1['TestSpec'][i])
        else:
            del d1['TestSpec'][i][key]
#print(d1)
print(d2)

输出l1 / print(l1):

A1,A2,LASB,原因

最终输出/打印(d2):

{'A1':{'STEP_8':'A1_08'},'A2':{'STEP_12':'A2_12'},'A3':{'STEP_34':'A3_34'},'A4':{'STEP_8 ':'A4_08'}}

从d1 ['TestSpec'] [i] .items()返回键,值对的for循环如STEP_1 : A1_1 STEP_2 : A1_2等......

预期产量:

{'A1':{'STEP_1':'A1_1','STEP_2':'A1_2','STEP_3':'A1_3'},}同样适用于所有A2,A3,A4。

python dictionary
2个回答
0
投票

据我所知,方法update() LITERALLY更新密钥的值。如果要将另一个值附加到与该键对应的现有值,我建议使用old value + new value更新该值

如果这个答案对你有用,请告诉我,否则我错了。


0
投票

如果我已正确理解您,您希望添加到从相关键返回的现有字典中。

用这个替换你的.update()线:

d2[i][key] = value

简单地说,你想要附加到返回的字典,而不是用另一个键/值对覆盖它。

© www.soinside.com 2019 - 2024. All rights reserved.