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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值