-2

如果我有字典 A:

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

我有字典 B:

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

如何将它们组合在一起,以便结果仅包含字典 A 中的字段,并且两者具有相同的字段根据 B 中的值更新 A 中的值。当字段是数组时,附加到它而不是替换它。

所以结果字典 C 应该是:

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

1 回答 1

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'}

这假设如果 in 的字段a是一个列表,那么 in 的同一个字段b也是一个列表。换句话说,如果b['friends']不是一个列表,它可能会中断。如果这是一个问题,您将需要检查两个字典中的字段类型并相应地调整行为。

于 2012-07-14T23:39:58.210 回答