QQ登录

只需要一步,快速开始

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

Python collections模块之Counter()详解

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  • 计数器(Counter2 B; _9 h. B6 T
    dict的子类,计算可hash的对象
    6 Z( J5 z8 g  E+ n请点击Counter" H% s3 B. ?5 H* b. C1 d6 y3 n5 c

    Counter()

    主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。: [1 M" b6 R9 a( y% _+ S

    1. from collections import Counter& t9 J; }) V1 w9 c0 ^
    2. ! V1 M6 z5 s% B: A/ |4 ^6 m
    3. list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]! [# ~+ {! q1 \3 o, L
    4. dic = Counter(list1); V% s, ~+ G6 p2 {5 U8 C) w\" L
    5. print(dic)5 V  }4 v  |  l4 y( s\" R
    6. #结果:次数是从高到低的
      \" G# c) j8 L9 y! f; d2 g, w% G
    7. #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})' h- U; a) r3 Y9 P' e( j

    8. / N1 }6 R( s0 r# A. \
    9. print(dict(dic))\" \7 m2 [/ q8 A1 y
    10. #结果:按字母顺序排序的2 [; T% X9 T' I- Q
    11. #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}
        u; N! Z$ {3 r5 q3 z
    12. ( L1 T+ O! F4 ?
    13. print(dic.items()) #dic.items()获取字典的key和value# u5 c* z# u0 Y  E, U: M\" Q
    14. #结果:按字母顺序排序的1 o$ q7 a8 g( p  ]& |4 s
    15. #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)])4 w  }' I  J; T) m) ?* \0 t
    16. * Q! a% p5 J; W\" O# V* Q
    17. print(dic.keys()); b: b# P# r1 k. f, M) _
    18. #结果:
      1 F' O\" L! x+ r6 N# P5 B. O, }. S0 i
    19. #dict_keys(['a', 'b', 'c', 'f', 'g'])8 M2 X( w* F- {! y; S

    20. - h2 t2 ]5 V\" \* E2 f
    21. print(dic.values())
      7 o+ j  d\" O* D0 t- G
    22. #结果:0 \' X2 @: @' w6 z5 Q
    23. #dict_values([3, 1, 2, 2, 3])
      6 z6 [3 L8 t& T/ x! d- r$ B0 `3 |' C

    24. 0 z  b9 j1 }; e: N
    25. print(sorted(dic.items(), key=lambda s: (-s[1])))
      1 P) S' F6 z8 g4 e# V$ I
    26. #结果:按统计次数降序排序
      : \, h2 t\" _# e8 m$ R/ O4 R+ Q! h
    27. #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]# T8 J* e; {& w( i+ t6 T
    28. $ v$ C7 s6 G  j. B8 F2 p
    29. for i, v in dic.items():# Y- j! R/ i# O! g\" G) D! f7 b
    30.     if v == 1:
      + [4 p8 u+ r' g4 j- ]
    31.         print(i)5 y' D) F, c9 @  L% v0 ~6 k
    32. #结果:
      + r  @. S3 p0 v
    33. #b) }, _6 V5 w- l7 e. l7 U, V% o
    复制代码
) s  u* s* U" _% B0 k+ T+ s

' {* Q7 A8 ^- O$ ~4 q8 |
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-7-10 09:26 , Processed in 0.445319 second(s), 51 queries .

回顶部