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

时间:2021-11-17 21:24:15

一个列表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的元素的集合。



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