获取字典中匹配键的值

Jul*_*uli 1 python dictionary

我有两个OrderedDict词典,我想检索两个词典中匹配键的值:

>>> from collections import OrderedDict
>>> d1 = OrderedDict()
>>> d2 = OrderedDict()

>>> d1["A"] = 2
>>> d1["B"] = 3
>>> d1["C"] = 2

>>> d2["D"] = 90
>>> d2["B"] = 11
>>> d2["C"] = 25

>>> # search both dicts and output values where key matches

(3, 11)
(2, 25)
Run Code Online (Sandbox Code Playgroud)

the*_*eye 5

print [(d1[key], d2[key]) for key in d1.viewkeys() & d2]
# [(2, 25), (3, 11)]
Run Code Online (Sandbox Code Playgroud)

d1.viewkeys() & d2用于获取两个词典中存在的键.一旦我们得到了,只需从两个词典中获取与之对应的值.

这是因为,根据Dictionary View Objects Python 2.7文档,

键视图设置类似,因为它们的条目是唯一且可清除的.

由于viewkeys已经设置好,我们可以直接对它们使用set操作.

注意:如果您使用的是Python 3.x,那么您必须使用这样的keys函数

print([(d1[key], d2[key]) for key in d1.keys() & d2])
Run Code Online (Sandbox Code Playgroud)

因为,根据Dictionary View Objects Python 3.x文档,

dict.keys(),dict.values()和dict.items()返回的对象是视图对象.

由于keys它本身返回一个视图对象,并且由于它们的条目是唯一且可清除的,因此我们可以像set一样使用它.

注意:在Python 2.x中,dict.keys返回键列表.由于我们无法对列表进行集合操作,因此我们无法使用Python 3.x解决方案.