某随机序列(例:[12, 5, 6, 4, 6, 5, 5, 7])中,找到出现次数最高的3个元素,它们出现的次数是多少

1.将序列转换为字典{元素:频度},根据字典中的值排序

1)创建列表

  1. from random import randint
  2. data = [randint(0, 20) for _ in range(30)]
  3. d = dict.fromkeys(data,0)
  4. for i in data:
  5. d[i] += 1
  6. d1 = sorted([(v, k) for k, v in d.items()], reverse = True)[:3]
  7. print(d1)

2)堆

  1. from random import randint
  2. import heapq
  3. data = [randint(0, 20) for _ in range(30)]
  4. d = dict.fromkeys(data,0)
  5. for i in data:
  6. d[i] += 1
  7. d2 = heapq.nlargest(3, ((v, k) for k, v in d.items()))
  8. print(d2)

2.标准库collections中的Counter对象

推荐

  1. from random import randint
  2. from collections import Counter
  3. data = [randint(0, 20) for _ in range(30)]
  4. c = Counter(data)
  5. print(c.most_common(3))

某篇英文文章的单词,进行词频统计,找到出现次数最高的10个单词,他们出现次数是多少

  1. import re
  2. from collections import Counter
  3. article = "I'm pretty passionate about all kinds of technologies"
  4. wordlist = re.split("\W+", article)
  5. c1 = Counter(wordlist)
  6. print(c1.most_common(3))