字典理解比较两个词典

时间:2015-06-26 16:36:33

标签: python

如何使用词典理解比较两个不同的词典,与列表理解类似。例如,给定:

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'a': 3, 'b': 10, 'c': 4}

#create another dict which contains key-(value1 x value2)
dict3 = {'a': 3, 'b': 20, 'c': 12}

3 个答案:

答案 0 :(得分:1)

>>> dict1 = {'a': 1, 'b': 2, 'c': 3}
>>> dict2 = {'a': 3, 'b': 10, 'c': 4}
>>> { k: v * dict2[k] for k, v in dict1.items() if k in dict2 }
{'a': 3, 'b': 20, 'c': 12}

这包括检查只有那些项将被复用哪些键存在于两个词典中。或者,您可以交换dict1dict2以获得相同的效果。

答案 1 :(得分:1)

假设共享所有密钥:

>>> dict1 = {'a': 1, 'b':  2, 'c': 3}
>>> dict2 = {'a': 3, 'b': 10, 'c': 4}
>>> {k: dict1[k] * dict2[k] for k in dict1}
{'a': 3, 'c': 12, 'b': 20}

如果没有共享密钥:

>>> dict1 = {'a': 1, 'b':  2, 'c': 3}
>>> dict2 = {'a': 3, 'b': 10, 'd': 4} # no 'c' key
>>> {k: dict1[k] * dict2[k] for k in dict1 if k in dict2}
{'a': 3, 'b': 20}

答案 2 :(得分:0)

创建键的交集,然后访问两个词典中的值:

{k: dict1[k] * dict2[k] for k in dict1.viewkeys() & dict2}

这使用充当集合的dictionary views&创建集合交集。)

在Python 3中,您可以通过默认方法获得dicitonary视图:

{k: dict1[k] * dict2[k] for k in dict1.keys() & dict2}

通过使用键集交集,您可以确保只获得出现在两个词典中的键。