Python如何统计序列中元素出现的频度 - Go语言中文社区

Python如何统计序列中元素出现的频度


某随机序列[12, 4, 6, 45, 12, 78, .....]中,找出出现次数最多的三个元素
以及他们出现的次数

  1. 利用默认值字典,先以键值对形式存储每个元素及出现的次数,然后将键值反转存储为元组,利用排序输出后三位
>>> from random import randint
>>> from collections import defaultdict
>>> data = [randint(0, 10) for _ in range(0, 30)]
>>> d = defaultdict(int)
>>> for x in data:
...     d[x] += 1
...
>>> d
defaultdict(<class 'int'>, {0: 5, 1: 1, 2: 3, 3: 6, 4: 5, 5: 1, 6: 3, 7: 1, 8: 2, 9: 1, 10: 2})
>>> new_d = sorted([(v, k) for k, v in d.items()])
>>> new_d[-3:]
[(5, 0), (5, 4), (6, 3)]
  1. 但是对于这个问题用Counter是最简单而且高效的解决办法
>>> from random import randint
>>> from collections import Counter
>>> data = [randint(0, 10) for _ in range(0, 30)]
>>> c = Counter(data)
>>> c.most_common(3)
[(7, 5), (0, 4), (1, 4)]
版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/9dda98527b17
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-09 08:38:32
  • 阅读 ( 1592 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢