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

标签 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', 'Ottawa']}

我想比较两个字典并提取 dict1'key'dict2value , 当且仅当 dict2'key'dict1value 匹配>!喜欢:

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/

相关文章:

python - 从Python中的嵌套列表中提取字符串

java - 填充图 - java

python - 从python中的字典列表构造两个列表

python - Tornado 协程在 Cython 中不起作用

python - 将生成器包装到缓冲区中?

python - 如何计算列表中的多个对象值

python - 从 python : openmp library not found? 调用 MKL 的线程函数

python - 查找路径列表的公共(public)路径前缀

python - 计算字典-列出项目python

python - 如何使用 python 编写自定义生成器函数