QQ登录

只需要一步,快速开始

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

Python collections模块之Counter()详解

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  • 计数器(Counter6 T# S# g+ u/ J, r* N3 v. R9 b3 s5 ~
    dict的子类,计算可hash的对象
    " C2 i/ ]- y3 d请点击Counter
    * `/ C- _9 Y2 W6 I4 N3 l4 t

    Counter()

    主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。
    + Z# ~( O! K6 q' U% X  q4 ?

    1. from collections import Counter
      - }, y0 ?+ g* A$ I) y\" A3 j3 v1 k  e6 v

    2. - f3 \1 H/ h8 w- J# K2 Q. D2 |5 @4 t1 i
    3. list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]
      2 q- `6 U7 O9 X' |( g2 G5 `
    4. dic = Counter(list1)
      ' G* x, Q2 g3 e1 w: H8 S
    5. print(dic)
      3 R\" e2 J- C: v/ p' t
    6. #结果:次数是从高到低的$ _# P, \1 u- \0 ]8 P8 A) p
    7. #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})( ], O& S8 P7 N0 \& ?- w. D
    8. - q3 N2 c0 ?) W! e
    9. print(dict(dic))
      * w- F, F2 W( `1 j- v' J
    10. #结果:按字母顺序排序的
      ' F: Q$ C1 y1 Q( F- |
    11. #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}
      6 ~1 X( u. q# ?, t

    12. $ w$ l$ c& ~3 k. e& C\" @* u
    13. print(dic.items()) #dic.items()获取字典的key和value
      # ~9 Q8 \5 l* |4 @, V
    14. #结果:按字母顺序排序的/ E) @2 U2 p/ f2 T
    15. #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)])2 g; ~' ?( a* X! G/ Y

    16. : `) M) }; }; `8 u6 T4 Y- N
    17. print(dic.keys())
      - ?\" u3 h; j/ Y1 @# P
    18. #结果:
      $ s+ e. L6 S2 R- @
    19. #dict_keys(['a', 'b', 'c', 'f', 'g'])2 d+ K; R( e! V$ K% b

    20. 4 L6 _8 U* A! j, o. p- k
    21. print(dic.values())' F. }/ a7 ]0 `0 ~' o
    22. #结果:* y; P6 x; C! Y+ Y( C5 P8 R: ]$ ^
    23. #dict_values([3, 1, 2, 2, 3])
        ]* B1 ~6 \* j* N/ k) x

    24. ; P9 l2 q; d  M' D, Z
    25. print(sorted(dic.items(), key=lambda s: (-s[1])))9 v3 s* _! T3 I. a* w
    26. #结果:按统计次数降序排序
      , m' T  z9 O8 E) t- `( J, e
    27. #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]
      $ ?& \# L' t8 f) l3 T

    28. $ e* T7 g7 R$ t- W
    29. for i, v in dic.items():
      0 p! D5 d  `9 a8 ^
    30.     if v == 1:
      9 q' g# W1 v$ a# ^4 q
    31.         print(i)
      ' ]) M3 T6 v3 l( ~# n& v
    32. #结果:
      2 T  l% E2 F1 M2 D0 \, b9 G' G
    33. #b
      9 Y- L2 y2 J! x
    复制代码

- O  M# F* s4 G1 t
# }3 V) M8 X! S
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 17:06 , Processed in 0.398115 second(s), 51 queries .

回顶部