Python算法详解
上QQ阅读APP看书,第一时间看更新

2.3.6 获取两个字典中相同的键值对

在Python程序中,我们可以寻找并获取两个字典中相同的键值对,此功能通过keys()或items()这两个函数执行基本的集合操作即可实现。

· 函数keys()

在Python字典中,函数keys()能够返回keys-view对象,其中暴露了所有的键。字典中的键可以支持常见的集合操作,例如求并集、交集和差集。由此可见,如果需要对字典中的键进行常见的集合操作,可以直接使用keys-view对象来实现,而无须先将它们转换为集合。

· 函数items()

在Python字典中,函数items()能够返回由键值对组成的items-view对象。这个对象支持类似的集合操作,可以用于找出两个字典中有哪些键值对有相同之处。

下面的实例文件same.py演示了获取两个字典中相同键值对的过程。

源码路径:daima\第2章\same.py

a = {
     'x': 1,
     'y': 2,
     'z': 3
}
b = {
     'x': 11,
     'y': 2,
     'w': 10
}
①print(a.keys() & b.keys())  # {'x','y'}
print(a.keys() - b.keys())  # {'z'}
②print(a.items() & b.items())  # {('y', 2)}
③c = {key: a[key] for key in a.keys() - {'z', 'w'}}
④print(c)  # {'x':1, 'y':2}

在上述代码中,①~②通过keys()和items()执行集合操作,从而获取两个字典中相同的键值对。③~④是使用字典推导式实现的,能够修改或过滤掉字典中的内容。如果想创建一个新的字典,在其中可能会去掉某些键。执行结果如图2-25所示。

图2-25 执行结果