[英]Update in dictionary is overwriting the key value pair in python
我想創建一個字典,使其包含另一個鍵值對。 在字典中使用更新方法時,它將覆蓋舊的鍵/值對。
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'}}
從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()
會更新鍵的值。 如果要在與鍵對應的現有值上附加另一個值,建議使用old value + new value
更新該old value + new value
讓我知道這個答案是否對您有用,或者我在某些方面有誤。
如果我對您的理解正確,則希望將其添加到從相關鍵返回的現有字典中。
將您的.update()
行替換為:
d2[i][key] = value
簡而言之,您想添加到返回的字典中,而不是用另一個鍵/值對覆蓋它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.