python-进阶教程-对两个集合/字典求交集、差集、并集

0.摘要

本文主要介绍在python3环境下,对集合和字典求交集、差集、并集的方式。

在python2环境下,字典中的对象需要先转换为集合。

 

1.集合

a = set([1,2,3,4,5,100,1000])
b = set([1,2,3,4,5,128.1024])
#交集
print(a & b)       #{1, 2, 3, 4, 5}
#差集
print(a - b)       #{1000, 100}
#并集
print(a | b)       #{128.1024, 1, 2, 3, 4, 5, 100, 1000}

 

2.字典

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

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

print('Common keys:', a.keys() & b.keys())
print('Keys in a not in b:', a.keys() - b.keys())
print('Keys in a or in b',a.keys() | b.keys())

print('(key,value) pairs in common:', a.items() & b.items())
print('(key,value) pairs in a not in b:', a.items() - b.items())
print('(key,value) pairs in a or in b:', a.items() | b.items())

注意:在python3环境下,字典的keys()或者items()可以求交集、差集和并集,values()不可以。具体原因如下:

字典的keys()方法会返回keys-view对象,这个对象直接支持集合操作,所以不需要将其转换为集合就可直接求解交集、差集和并集。

字典的items()方法返回由(keys,value)对组成的items-view对象,这个对象也是直接支持集合操作的。

尽管字典的values()方法和keys()方法类似,但values()方法不支持集合操作。部分原因是因为在字典中键和值是不同的,从值的角度来看,并不能保证所有值都是唯一的。所以,如果相对values()方法进行集合操作,必须先将值转化为集合。

利用字典的集合操作特性,可以实现很多实用的功能,比如批量去掉某些键:

a = {
   'x' : 1,
   'y' : 2,
   'z' : 3
}
c = {key:a[key] for key in a.keys() - {'z','w'}}
#c = {'y': 2, 'x': 1}

注意:在python2环境下,需要将dict.keys()先转换为set,即set(a.keys()) &set(b.keys()),否则会报错:TypeError: unsupported operand type(s) for &: 'list' and 'list'。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值