簡體   English   中英

字典中的更新會覆蓋python中的鍵值對

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM