2012-07-14 55 views
-2

如果我有字典答:更新蟒蛇類型的字典

{ 'name': 'Jack', 
    'age': 24, 
    'friends': ['Bob', 'Alice', 'Karen'], 
} 

,我有字典B:

{ 'name': 'Jack', 
    'favorite_color': 'blue', 
    'friends': ['Daren'], 
} 

我怎樣才能將它們組合起來,這樣的結果只會有一個人在字典中的字段和其中兩個具有相同的字段根據B中的值更新A中的值。並且當該字段是一個數組附加到它而不是替換它。

因此產生的字典C應該:

{ 'name': 'Jack', 
    'age': 24, 
    'friends': ['Bob', 'Alice', 'Karen', 'Daren'], 
} 
+5

迭代屬性並執行相應的測試,步驟......沒有內置函數。 – 2012-07-14 23:36:03

回答

3
a = { 'name': 'Jack', 
    'age': 24, 
    'friends': ['Bob', 'Alice', 'Karen'], 
} 

b = { 'name': 'Jack', 
    'favorite_color': 'blue', 
    'friends': ['Daren'], 
} 

for key in a.keys(): 
    if key in b: 
     if hasattr(a[key], 'extend'): 
      a[key].extend(b[key]) 
     else: 
      a[key] = b[key] 

print a 

輸出:

{'age': 24, 'friends': ['Bob', 'Alice', 'Karen', 'Daren'], 'name': 'Jack'} 

這是假設,如果在a領域是一個列表,然後在b同場也是一個列表。換句話說,如果b['friends']不是一個列表,它可能會中斷。如果這是一個問題,您需要檢查兩個字典中字段的類型並相應地調整行爲。