《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点

本节书摘来自异步社区《Python Cookbook(第3版)中文版》一书中的第1章,第1.9节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 在两个字典中寻找相同点

1.9.1 问题

有两个字典,我们想找出它们中间可能相同的地方(相同的键、相同的值等)。

1.9.2 解决方案

考虑如下两个字典:

a = {
   'x' : 1,
   'y' : 2,
   'z' : 3
}

b = {
   'w' : 10,
   'x' : 11,
   'y' : 2
}

要找出这两个字典中的相同之处,只需通过keys()或者items()方法执行常见的集合操作即可。例如:

# Find keys in common
a.keys() & b.keys() # { 'x', 'y' }

# Find keys in a that are not in b
a.keys() - b.keys() # { 'z' }

# Find (key,value) pairs in common
a.items() & b.items() # { ('y', 2) }

这些类型的操作也可用来修改或过滤掉字典中的内容。例如,假设想创建一个新的字典,其中会去掉某些键。下面是使用了字典推导式的代码示例:

# Make a new dictionary with certain keys removed
c = {key:a[key] for key in a.keys() - {'z', 'w'}}
# c is {'x': 1, 'y': 2}

1.9.3 讨论

字典就是一系列键和值之间的映射集合。字典的keys()方法会返回keys-view对象,其中暴露了所有的键。关于字典的键有一个很少有人知道的特性,那就是它们也支持常见的集合操作,比如求并集、交集和差集。因此,如果需要对字典的键做常见的集合操作,那么就能直接使用keys-view对象而不必先将它们转化为集合。

字典的items()方法返回由(key,value)对组成的items-view对象。这个对象支持类似的集合操作,可用来完成找出两个字典间有哪些键值对有相同之处的操作。

尽管类似,但字典的values()方法并不支持集合操作。部分原因是因为在字典中键和值是不同的,从值的角度来看并不能保证所有的值都是唯一的。单这一条原因就使得某些特定的集合操作是有问题的。但是,如果必须执行这样的操作,还是可以先将值转化为集合来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值