一个列表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的元素的集合。
我推荐第二种迭代的方式,据说是效率要搞很多,但是我没有测试过。