1

次のような2つの辞書があります。

dict1 = {'Ron': ['Ronaldo', 'Ronald', 'Ron', 'Ronny'],
         'John': ['Johnny', 'john', 'johnny Bravo'],
         'Hard': ['Hardy', 'Hardy Boys', 'Hardness']}

dict2 = {'Ronald': ['America', 'New York'],
         'Johnny': ['Canada', 'Ottawa']}

両方の辞書を比較し、 dict2 の「キー」がdict1と一致する場合にのみ、 dict1キー」dict2抽出したい! お気に入り:

resultant_dict = {'Ron' : ['America', 'New York'],
                  'John' : ['Canada', 'Ottawa']}

ネストされたループを試してみましたが、目的の辞書を取得できますが、python のジェネレーターでこれを行うのを手伝ってくれる人がいます! ありがとう
注: DICT2 のキーは、DICT1 の値で 1 つだけにすることができます!

4

1 に答える 1

4

まず、dict1辞書を逆にします。

rev = {v:k for k,vs in dict1.iteritems() for v in vs}

rev今でしょ:

{'Hardness': 'Hard',
 'Hardy': 'Hard',
 'Hardy Boys': 'Hard',
 'Johnny': 'John',
 'Ron': 'Ron',
 'Ronald': 'Ron',
 'Ronaldo': 'Ron',
 'Ronny': 'Ron',
 'john': 'John',
 'johnny Bravo': 'John'}

dict2次に、この辞書を使用してキーをマップします。

resultant_dict = {rev[k]:v for k,v in dict2.iteritems()}

戻る

{'John': ['Canada', 'Ottawa'], 'Ron': ['America', 'New York']}
于 2013-02-27T10:12:53.893 に答える