1

我有两个字典,例如:

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

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

我想比较两个字典并提取 dict1 的“键”dict2当且仅当dict2“键”dict1匹配时!像:

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

我已经尝试过嵌套循环并且能够获得所需的字典,但可以请有人通过 python 中的生成器帮助我做到这一点!谢谢
注意:DICT2 的 KEY 在 DICT1 的 VALUE 中只能是一个!

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 回答