查找统计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']

猜你喜欢

转载自blog.csdn.net/qq284489030/article/details/79507161