我有两本字典:
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 的value , 当且仅当 dict2 的 'key' 与 dict1 的value 匹配>!喜欢:
resultant_dict = {'Ron' : ['America', 'New York'],
'John' : ['Canada', 'Ottawa']}
我已经尝试过嵌套循环并且能够获得所需的 dict 但可以请有人帮助我通过 python 中的生成器来做到这一点!谢谢
注意:DICT2的KEY在DICT1的VALUE中只能是ONE!
最佳答案
首先,反转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']}
关于python - 比较多个字典并使用python生成另一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109340/