python-進階教程-對兩個集合/字典求交集、差集、並集
阿新 • • 發佈:2018-12-18
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())
注意:字典的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}