如何快速的统计出那些是重复的呢?
形如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']