统计一个序列中出现次数最多的元素,你能有几种方法?
第一种最原始的方法:
直接使用字典硬来
from random import randint
#首先生成一个20个数的随机序列
list = [ randint(1,20) for i in range(100) ]
#然后去统计数量,思路就是用一个字典记录每个数字出现的次数
numCount = {}
for num in list:
if( num in numCount):
numCount[num] = numCount[num]+1
else:
numCount[num]=1
print(numCount)
#排序
print(sorted(numCount.items(),key=lambda x : x[1],reverse=True))
list=sorted(numCount.items(),key=lambda x : x[1],reverse=True)
for i in range(3):
print(list[i])
第二种,稍微简洁一点的方法
from random import randint
#创建一个序列
list=[randint(0,20) for _ in range(100)]
#用序列中的值作为键,0作为值生成一个字典
data=dict.fromkeys(list,0)
for x in list:
data[x]+=1
#然后找到频数最高的三个数
result=sorted(data.items(),key=lambda x : x[1] ,reverse=True)
print(result)
result2=[]
for i in range(3):
result2.insert(i,result[i])
print(result2)
第三种,高手的方法
from collections import Counter
from random import randint
#创建一个序列
list=[randint(0,20) for _ in range(100)]
#用Counter统计
c=Counter(list)
print(c)
#统计最高出现频度的结果
c2=c.most_common(3)
print(c2)