1. 程式人生 > >查詢統計python列表中的重複元素

查詢統計python列表中的重複元素

如何快速的統計出那些是重複的呢?

      形如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']