我想创建一个字典,使其包含另一个键值对。 在字典中使用更新方法时,它将覆盖旧的键,值对。
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','A3','A4']
最终输出/打印(d2):
{'A1':{'STEP_8':'A1_08'},'A2':{'STEP_12':'A2_12'},'A3':{'STEP_34':'A3_34'},'A4': {'STEP_8':'A4_08'}}
for循环,它从d1 ['TestSpec'] [i] .items()返回键,值对,例如STEP_1 : A1_1 STEP_2 : A1_2
等等...
预期输出:
{'A1':{'STEP_1':'A1_1','STEP_2':'A1_2','STEP_3':'A1_3'},}同样适用于所有A2,A3,A4。
答案 0 :(得分:0)
据我所知,方法update()
完全会更新密钥的值。如果要将其他值附加到与键对应的现有值上,建议使用old value + new value
让我知道此答案是否对您有用,或者我在某些方面有误。
答案 1 :(得分:0)
如果我对您的理解正确,那么您想添加到从相关键返回的现有字典中。
为此替换您的.update()
行:
d2[i][key] = value
简单地说,您想附加到返回的字典中,而不是用另一个键/值对覆盖它。