1

私は辞書にかなり慣れていないので、これはおそらくかなり基本的な質問です。

同様の要素を持つ 2 つの異なる辞書があるとします。例:

    Dictionary1 = {'Bob' : 1, 'Mary' : 2, 'Sue' : 3, 'George' : 4}
    Dictionary2 = {'Bob' : 1, 'Sue' : 2, 'Jill' : 3, 'Isaac' : 4, 'George' : 5}

2 つの辞書の共通部分を取り、最初の辞書のインデックスを 2 番目の辞書に適用できるようにしたいと考えています。したがって、次のような出力が必要です。

    DictionaryCombo = {'Bob' : 1, 'Sue' : 3, 'George' : 4}

2 つの辞書の共通部分のキーと値のペアが必要であることはわかっていますが、出力がどのように表示されるかはわかりません。

4

2 に答える 2

4

d1 をサブセット化して、d2 に存在する要素のみを持つようにする場合

d1 = {'Bob': 1, 'Mary': 2, 'Sue': 3, 'George': 4}
d2 = {'Bob': 101, 'Sue': 102, 'Jill': 103, 'Isaac': 104, 'George': 105}
{k: v for k, v in d1.items() if k in d2}
# {'Bob': 1, 'Sue': 3, 'George': 4}

または、 applyについて言及したので、d2 の値を更新したかったのですか?

d2.update(d1)
print d2
# {'Sue': 3, 'Mary': 2, 'Jill': 103, 'Isaac': 104, 'Bob': 1, 'George': 4}

または、本当に 2 つのリストから開始する場合 (辞書から開始しない場合):

el1 = ['Bob', 'Mary', 'Sue', 'George']
el2 = ['Bob', 'Sue', 'Jill', 'Isaac', 'George']
dict( (val, idx) for idx, val in enumerate(d1, start=1) if val in set(el2) )
#{'Bob': 1, 'Sue': 3, 'George': 4}

キーの 1 つと値の 1 つの 2 つのリストがあり、それらを にしたいdict場合は、次を使用できますzip

keys = ['Bob', 'Mary', 'Sue', 'George']  
vals = [1, 2, 3, 4]
dict( zip(keys, vals) )
# {'Bob': 1, 'Mary': 2, 'Sue': 3, 'George': 4}
于 2012-10-16T16:31:10.250 に答える
2

dict.viewkeys()メソッドは、2 つの辞書の共通キー (共通部分) を簡単に見つけることができるセットのようなオブジェクトを提供します。

d1 = {'Bob' : 1, 'Mary' : 2, 'Sue' : 3, 'George' : 4}
d2 = {'Bob' : 1, 'Sue' : 2, 'Jill' : 3, 'Isaac' : 4, 'George' : 5}

common_keys = d1.viewkeys() & d2.viewkeys()
dict_with_d1_values = {k: d1[k] for k in common_keys}
# -> {'Bob': 1, 'George': 4, 'Sue': 3}

または、実際に両方の値が必要な場合:

dict_with_combined_values = {k: (d1[k], d2[k]) for k in common_keys}
# -> {'Bob': (1, 1), 'George': (4, 5), 'Sue': (3, 2)}
于 2012-10-16T16:52:47.700 に答える