python统计列表元素重复次数的N中方法

一个列表peopleidlistall里面有好几万个元素,我想找到里面重复元素的次数,或者说找到重复元素次数为length的元素。

第一种,python的list自带的count方法:

peopleidlistall2 = list(set(peopleidlistall))
        id_peoplelist = list()
        for id_people in peopleidlistall2:
            times = peopleidlistall.count(id_people)
            if times == length:
                id_peoplelist.append(id_people)

此时的id_peoplelist便是重复次数为length的元素的集合。


第二种,使用字典的迭代器方法,使用的iterkeys方法:

peopleiddict = dict(Counter(peopleidlistall))
id_peoplelist = list()
for id_p in peopleiddict.iterkeys():
            #print id_p, peopleiddict[id_p]
            if peopleiddict[id_p] == length:
                #print peopleiddict[id_p]
                id_peoplelist.append(id_p)

此时的id_peoplelist便是重复次数为length的元素的集合。


第三种,使用字典的传统方法,也是使用for循环:

peopleiddict = dict(Counter(peopleidlistall))
id_peoplelist = list()
for i in range(len(peopleiddict)):
            if peoplelist[i][1] == length:
                id_peoplelist.append(peoplelist[i][0])

此时的id_peoplelist便是重复次数为length的元素的集合。

使用字典的values方法:

peopleiddict = dict(Counter(peopleidlistall))
id_peoplelist = list()
for i in range(len(peopleiddict.values())):
            if peopleiddict.values()[i] == 2:
                id_peoplelist.append(peopleiddict.keys()[i])

此时的id_peoplelist便是重复次数为length的元素的集合。



我推荐第二种迭代的方式,据说是效率要搞很多,但是我没有测试过。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值