簡體   English   中英

合並兩個具有相同鍵值的字典

[英]merge two dictionaries with same key values

我有兩個字典,包含相同的鍵

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

當我合並它們時,由於名稱相同,字典b的鍵替換了a的鍵。 這是我正在使用的合並代碼

z = dict(list(a.items()) + list(b.items()))

有什么辦法可以保留所有鍵,我知道字典不能具有相同的鍵名,但是我可以使用以下方法:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6],
     'b_1':[7,4],
     'c_1':[10,11]}

您可以在update()方法中使用生成器表達式:

a.update((k + '_1' if k in a else k, v) for k, v in b.items())
# {'a': [3, 2, 5], 'b': [9, 8], 'c': [1, 6], 'b_1': [7, 4], 'c_1': [10, 11]}

雖然我認為Usman的答案可能是“正確”的解決方案,但從技術上講,您是這樣要求的:

for key, value in b.items():
  if key in a:
    a[key + "_1"] = value
  else:
    a[key] = value

做這樣的事情也許:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

z = {}

for key in a:
    if key in b:
        z[key + "_1"] = b[key]
        z[key] = a[key]
    else:
        z[key] = a[key]


print(z)                            

輸出:

{'a': [3, 2, 5], 'b_1': [7, 4], 'b': [9, 8], 'c_1': [10, 11], 'c': [1, 6]}

檢查b中的鍵是否存在於a中,然后將key_1的key_1值添加到a中,否則將key的b值添加到key中。

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}
for k in b:
    if k in a:
        a[k+'_1']=b[k]
    else:
        a[k]=b[k]
print(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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