python2 python3 对比字典、列表相同以及不同之处

set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。

1、列表的交集(取相同的元素)

a = [1,2,3]
b = [1,2,3,4]
A = set(a)
B = set(b)
c = A & B
print(c,type(c))
结果:{1, 2, 3} <class 'set'>

2、并集(取所有不同的元素,合并)

a = [1,2,3]
b = [1,2,3,4]
A = set(a)
B = set(b)
c = A | B
print(c,type(c))
结果:{1, 2, 3, 4} <class 'set'>

3、差集(集合b中有的集合a中没有的

a = [1,2,3]
b = [1,2,3,4]
A = set(a)
B = set(b)
c = B.difference(A)
print(c,type(c))
结果:{4} <class 'set'>

python3 对比两个字典的相同以及不同之处

1、查看两个字典共有的key

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
print(dict1.keys() & dict2.keys())
结果:{'b', 'c', 'a'}

2、查看两个字典不共有的key

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
print(dict1.keys() ^ dict2.keys())
结果:{'e', 'd'}

3、查看在字典dit1里面而不在字典dit2里面的key

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
print(dict1.keys() - dict2.keys())
结果:{'d'}

4、查看字典dict1和字典dict2相同的键值对

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
print(dict1.items() & dict2.items())
结果:{('a', 1), ('b', 2)}

python2 对比两个字典的相同以及不同之处(需要用set转成集合对比,python2不支持字典的直接对比)

1、所有差异,包括键和值

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
differ = set(dict1.items()) ^ set(dict2.items())
print(differ)
结果:{('e', 6), ('d', 4), ('c', 3), ('c', 5)}

2、相同的key,不通的value

dict1 = {'a':1,'b':2,'c':3,'d':4}
dict2 = {'a':1,'b':2,'c':5,'e':6}
 
diff = dict1.keys() & dict2
print(diff) 结果:{'a', 'c', 'b'}
diff_vals = [(k, dict1[k], dict2[k]) for k in diff if dict1[k] != dict2[k]]
print(diff_vals)  结果:[('c', 3, 5)]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值