QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2464|回复: 0
打印 上一主题 下一主题

Python collections模块之Counter()详解

[复制链接]
字体大小: 正常 放大

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  • 计数器(Counter  u2 e; u4 A5 e1 ]% S, a) Z/ {% A* r
    dict的子类,计算可hash的对象8 u* {4 H1 Z+ {  u
    请点击Counter
    + i4 H! E! ^& t0 ^6 X  s. z

    Counter()

    主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。, O3 f' h: d" l6 A" j% y: B

    1. from collections import Counter& u2 x4 E* x\" m

    2. ( O; z; M7 r, Z  Z
    3. list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]8 e4 k6 D- x- c) s. ]
    4. dic = Counter(list1)! e' y\" C% F3 V: S% d  U: Q2 j
    5. print(dic)
      * J7 t! S+ D; [2 u# D! Q: ]
    6. #结果:次数是从高到低的% N0 Z* X2 V6 |  f6 H\" M+ y
    7. #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})+ d# p; ]2 z( i8 o

    8. 9 K$ _\" J0 J' Y8 W* D& Z1 r5 e
    9. print(dict(dic))7 j) E& `% {/ y7 a1 |. ~
    10. #结果:按字母顺序排序的  j' l3 ^3 \% B
    11. #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}+ x: q* M- ?. V1 r; U/ \
    12. 6 T) c/ T9 i  n+ q) i0 ?
    13. print(dic.items()) #dic.items()获取字典的key和value. m* q5 O' L& W* R8 R  }
    14. #结果:按字母顺序排序的! x1 X; k0 K. o. u: G
    15. #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)])
      & b( v, H0 b% p. i- `

    16. 0 ^, L: N! A\" v- m
    17. print(dic.keys())
      ) f; X  Q5 W! X\" R) G& ]6 f- B
    18. #结果:
      ' a0 q\" I3 S( o* \6 [; N
    19. #dict_keys(['a', 'b', 'c', 'f', 'g'])$ |- i0 f3 V- H- z- X

    20. 0 c! t8 b5 m8 D- Q% n
    21. print(dic.values())
      5 j\" E# [* b5 d; }: D( a/ [% E
    22. #结果:4 z1 t2 h4 g9 _  Y1 d$ P
    23. #dict_values([3, 1, 2, 2, 3])
        g2 I) ?( X3 \

    24. 7 t2 {8 C. p4 V
    25. print(sorted(dic.items(), key=lambda s: (-s[1])))
      + c! R, e9 q* u+ P( u0 H  M/ y
    26. #结果:按统计次数降序排序5 }2 [; x5 [  c3 x
    27. #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]& J* F+ e1 c1 ^: ]
    28. 2 F6 D: ]1 a. _6 i; X# N
    29. for i, v in dic.items():
      7 l7 x; M\" \% M0 i, n\" G2 t2 ?, D7 p
    30.     if v == 1:, R  o0 s: F/ p; w$ R3 U
    31.         print(i)
      ' C# M1 }  L; x; u- d! V1 o
    32. #结果:
      8 q7 v\" S5 T\" M. H8 P
    33. #b
      7 F+ J' V\" F9 B4 V  ], O
    复制代码

3 y% w# w* z4 T; R6 |6 Y5 E4 B
$ g3 W8 f. L, c9 N$ f" h4 J6 w6 B
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-26 00:41 , Processed in 0.584701 second(s), 50 queries .

回顶部