2012-07-14 59 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']不是一个列表,它可能会中断。如果这是一个问题,您需要检查两个字典中字段的类型并相应地调整行为。