-2

辞書Aを持っている場合:

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

そして私は辞書Bを持っています:

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

結果にディクショナリAにあるフィールドのみが含まれ、2つのフィールドが同じフィールドである場合、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'}

aこれは、のフィールドがリストである場合、の同じフィールドもリストであると想定していbます。つまり、b['friends']がリストでない場合、破損する可能性があります。それが問題になる場合は、両方の辞書のフィールドのタイプを確認し、それに応じて動作を調整する必要があります。

于 2012-07-14T23:39:58.210 に答える