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

1.问题
有两个字典,我们想找出它们中间可能相同的地方(相同的键,相同的值等)
2.解决方案
考虑如下两个字典:

a={
        'x':1,
        'y':2,
        'z':3,
}
b={
        'w':10,
        'x':11,
        'y':2,
}

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

# 寻找a,b中相同的键
a.keys()&b.keys()  #{'x','y'}
# 寻找在a中而不在b中的键
a.keys()-b.keys()  #{'z'}
#寻找a,b中键值都相同的元素
a.items()&b.items() #{('y':2)}

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

c={key:a[key] for key in a.keys()-{'z','w'}}
print(c)

3.讨论
字典就是一系列键和值之间的映射集合。字典的key()方法会返回keys-view对象,其中暴露了所有的键。关于字典的键有一个很少有人知道的特性,那就是它们也支持常见的集合操作,比如求并集,交集,差集等。因此,如果需要对字典的键做常见的集合操作,那么就能直接使用keys-view对象而不必将它们先转化为集合。
字典的items()方法返回由(key,value)对组成的items-view对象。这个对象支持类似的集合操作,可用来完成找出两个字典间有哪些键值对有相同之处的操作。
尽管类似,但字典的values()方法并不支持集合操作。部分原因是因为在字典中键和值是不同的,从值的角度来看并不能保证所有的值都是唯一的。单这一条原因就使得某些特定的集合操作是有问题的。但是,如果必须执行这样的操作,还是可以先将值转化为集合来实现。
4 .
人生苦短,我用Python

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值