某随机序列(例:[12, 5, 6, 4, 6, 5, 5, 7])中,找到出现次数最高的3个元素,它们出现的次数是多少
1.将序列转换为字典{元素:频度},根据字典中的值排序
1)创建列表
from random import randintdata = [randint(0, 20) for _ in range(30)]d = dict.fromkeys(data,0)for i in data:d[i] += 1d1 = sorted([(v, k) for k, v in d.items()], reverse = True)[:3]print(d1)
2)堆
from random import randintimport heapqdata = [randint(0, 20) for _ in range(30)]d = dict.fromkeys(data,0)for i in data:d[i] += 1d2 = heapq.nlargest(3, ((v, k) for k, v in d.items()))print(d2)
2.标准库collections中的Counter对象
推荐
from random import randintfrom collections import Counterdata = [randint(0, 20) for _ in range(30)]c = Counter(data)print(c.most_common(3))
某篇英文文章的单词,进行词频统计,找到出现次数最高的10个单词,他们出现次数是多少
import refrom collections import Counterarticle = "I'm pretty passionate about all kinds of technologies"wordlist = re.split("\W+", article)c1 = Counter(wordlist)print(c1.most_common(3))
