我想创建一个字典,使其包含另一个键值对。在字典中使用更新方法时,它会覆盖旧密钥,值对。
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。
据我所知,方法update()
LITERALLY更新密钥的值。如果要将另一个值附加到与该键对应的现有值,我建议使用old value + new value
更新该值
如果这个答案对你有用,请告诉我,否则我错了。
如果我已正确理解您,您希望添加到从相关键返回的现有字典中。
用这个替换你的.update()
线:
d2[i][key] = value
简单地说,你想要附加到返回的字典,而不是用另一个键/值对覆盖它。