如何比较两个不同的字典使用字典理解,以类似的方式列表理解。例如,给定:字典理解比较两个字典
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}
如何比较两个不同的字典使用字典理解,以类似的方式列表理解。例如,给定:字典理解比较两个字典
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}
创建密钥的交点,然后在两个字典访问值:
{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}
,可以确保你只能得到同时出现在字典中的键。
>>> 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}
这包括检查,只有那些项目将被multiplicated其中在两个字典存在密钥。或者,您可以换用dict1
和dict2
来达到同样的效果。
假设所有键都共享:
>>> 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}
...通过写字典理解? – jonrsharpe