查詢統計python列表中的重複元素
阿新 • • 發佈:2019-02-13
如何快速的統計出那些是重複的呢?
形如aa=[1,2,2,3,2,4]的一個list,其中有重複元素,由於集合中重複元素無意義,所以
bb=list(set(aa))可很容易得到去除重複的列表[1,2,3,4]
若比較aa和bb的長度,很容易發現有重複,但無法指出重複的元素是哪些。
那麼用網上一個比較兩個list差集的方法可行嗎?
print list(set(aa).difference(set(bb))),結果是不行,因為bb和aa的差正好都是重複的元素,而set(aa)的轉換已經去除了重複元素,所以得到aa和bb的差值是[]。可見這種方法只能用於比較兩個列表中有不同元素的情況。
最簡單的方法其實是引入Counter包:
from collections import Counter
然後Counter(aa),即可得到一個顯示出所有元素重複次數的dict。
Counter({2: 3, 1: 1, 3: 1, 4: 1})
出現頻度最高的元素會預設在前面,也可用dict()操作符將其轉換為一個普通的dict來進行額外處理。
比如採用列表解析表示式來處理:
print [ str(k)+':'+str(v) for k,v in dict(Counter({2: 3, 1: 1, 3: 1, 4: 1})).items() if v>1]
將顯示出僅含重複項的列表:
['2:3']