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'。
相關文章
- Python求兩個list的交集、並集、差(補)集、對稱差集的方法Python
- NET 集合交集、並集、差集操作
- Linux求兩個文字檔案的交集、差集、並集Linux
- 【資料集合】並集、交集、差集、子集
- Python求兩個list的差集、交集與並集的方法Python
- JS求陣列的交集、並集、差集JS陣列
- 利用Underscore求陣列的交集、並集和差集陣列
- C# 交集、差集、並集、去重C#
- JS實現並集,交集和差集JS
- Linux 對比兩個文字的交集和差集(comm)Linux
- C# Linq 交集、並集、差集、去重C#
- 【轉】 js陣列 Array 交集 並集 差集 去重JS陣列
- sql_intersect交集_minus差集_並集union_union allSQL
- 用bash命令求兩個集合的交集
- python-進階教程-通過公共鍵對字典列表排序Python排序
- Spark2 Dataset去重、差集、交集Spark
- MySQL實現差集(Minus)和交集(Intersect)MySql
- List和set集合:交集、差集、合集的區別retainAll,removeAll、addAllAIREM
- python-進階教程-對切片進行命名Python
- 並查集の進階用法並查集
- Python實現求多個集合之間並集的方法Python
- 【進階篇】使用 Stream 流對比兩個集合的常用操作分享
- java stream()流對兩個集合進行比對Java
- 並查集的初級應用及進階並查集
- 刷題總結:使用Python-雜湊表——兩數之和、兩個陣列的交集Python陣列
- python-進階教程-使用物件屬性進行排序Python物件排序
- POJ 1611-The Suspects(並查集-同一集合)並查集
- C# 集合交、並、差、去重,物件集合交併差C#物件
- python-進階教程-從序列中移除重複項並保持元素順序不變Python
- python-字典Python
- 並查集到帶權並查集並查集
- 最強資料集集合:50個最佳機器學習公共資料集機器學習
- Oracle中對兩個資料表交集的查詢(轉)Oracle
- 【並查集】【帶偏移的並查集】食物鏈並查集
- 求n個排序連結串列的交集排序
- python-進階教程-根據欄位將記錄分組Python
- 並查集(一)並查集的幾種實現並查集
- 力扣之兩個陣列的交集力扣陣列