1. 苏葳的备忘录首页
  2. 编程

查找统计Python列表中的重复元素

python 列表 字典有一个xml配置文件,里面配置了许多关键词,由于许多人维护这个配置文件,导致关键词有可能重复,引发一些问题。现在用正则将所有关键词提取到一个pyhton的list 里面,那么如何快速的统计出那些是重复的呢?形如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’]

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/549.html

发表评论

邮箱地址不会被公开。 必填项已用*标注