Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较多个字典并使用python生成另一个字典_Python_Dictionary_Generator - Fatal编程技术网

比较多个字典并使用python生成另一个字典

比较多个字典并使用python生成另一个字典,python,dictionary,generator,Python,Dictionary,Generator,我有两本字典,比如: dict1 = {'Ron': ['Ronaldo', 'Ronald', 'Ron', 'Ronny'], 'John': ['Johnny', 'john', 'johnny Bravo'], 'Hard': ['Hardy', 'Hardy Boys', 'Hardness']} dict2 = {'Ronald': ['America', 'New York'], 'Johnny': ['Canada', 'O

我有两本字典,比如:

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'key'dict2值,当且仅当dict2'key'dict1值匹配!比如:

resultant_dict = {'Ron' : ['America', 'New York'],
                  'John' : ['Canada', 'Ottawa']}
我已经尝试过嵌套循环,并且能够得到所需的dict,但是请有人用python中的生成器帮助我做到这一点!谢谢

注意:DICT2的键只能是DICT1值中的一个

首先,颠倒
dict1
字典:

rev = {v:k for k,vs in dict1.iteritems() for v in vs}
resultant_dict = {rev[k]:v for k,v in dict2.iteritems()}
rev
现在是:

{'Hardness': 'Hard',
 'Hardy': 'Hard',
 'Hardy Boys': 'Hard',
 'Johnny': 'John',
 'Ron': 'Ron',
 'Ronald': 'Ron',
 'Ronaldo': 'Ron',
 'Ronny': 'Ron',
 'john': 'John',
 'johnny Bravo': 'John'}
然后使用此字典从
dict2
映射键:

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

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

首先,颠倒
dict1
字典:

rev = {v:k for k,vs in dict1.iteritems() for v in vs}
resultant_dict = {rev[k]:v for k,v in dict2.iteritems()}
rev
现在是:

{'Hardness': 'Hard',
 'Hardy': 'Hard',
 'Hardy Boys': 'Hard',
 'Johnny': 'John',
 'Ron': 'Ron',
 'Ronald': 'Ron',
 'Ronaldo': 'Ron',
 'Ronny': 'Ron',
 'john': 'John',
 'johnny Bravo': 'John'}
然后使用此字典从
dict2
映射键:

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

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

请展示您的尝试?此外,这个问题没有很好的定义-来自
dict2
的密钥是否只能位于
dict1
的值之一?如果没有,那么在这种情况下会发生什么?请说明您尝试这样做的情况?此外,这个问题没有很好的定义-来自
dict2
的键是否只能位于
dict1
的值之一?如果没有,那么在这种情况下会发生什么?