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)]