QQ登录

只需要一步,快速开始

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

Python collections模块之Counter()详解

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  • 计数器(Counter( W" _( ]+ x# s  Z1 K6 k4 ~+ b
    dict的子类,计算可hash的对象
    7 e, {& Y  ]& S( m% B9 c1 X请点击Counter  W  m8 l+ X! |* D+ h2 g

    Counter()

    主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。
    % g0 y7 h  D9 @

    1. from collections import Counter: Q$ D3 s4 q\" s2 T& I3 h+ V' c5 x\" M

    2. 0 {! I9 ~# [  {& i( o) ~
    3. list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]
      . t+ ?0 }: R\" U9 H
    4. dic = Counter(list1)( K. P/ R1 V. O5 w
    5. print(dic)
      4 g  R\" L* X/ d2 M1 }7 p8 m
    6. #结果:次数是从高到低的! z\" j- L0 ]* D  H\" U
    7. #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})
      ! J& N7 D4 w' j: ^% p& ?

    8.   e8 f5 _% L0 s
    9. print(dict(dic))  J! r- ~( v6 _4 I
    10. #结果:按字母顺序排序的
      6 \\" j' J4 k: x5 _; }
    11. #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}
      8 O  L- @# }/ T! T4 H, r

    12. / x, [1 i! E( V0 b, v' o! S% [0 K
    13. print(dic.items()) #dic.items()获取字典的key和value( S& v* _; P6 g/ @
    14. #结果:按字母顺序排序的
      6 ^6 ~5 p; J: d/ M4 T* s+ n
    15. #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)])\" }, i5 Y7 b6 w: n

    16. ) Y. B4 e3 E  ?5 M5 E
    17. print(dic.keys())
      : _  d$ C' O( C9 z
    18. #结果:
        \3 e5 g2 q1 d! @
    19. #dict_keys(['a', 'b', 'c', 'f', 'g'])6 }) Z9 [0 x1 O! @  X. G4 F
    20. $ K' Y$ T. E. r( ?1 x  H$ g
    21. print(dic.values())
      + K8 \' l! }2 X
    22. #结果:
      , O\" d# Z' X* L/ _5 G
    23. #dict_values([3, 1, 2, 2, 3])
      5 J5 x$ p  Y5 n
    24. & O8 e4 M: K: A
    25. print(sorted(dic.items(), key=lambda s: (-s[1])))
      / J$ D6 q: |8 V9 p* r% j7 V
    26. #结果:按统计次数降序排序
      \" U- O: D  S* _\" k- u  m; `
    27. #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]
      4 \\" n; [; f  ~* _: f# T

    28. , H# `% g' w/ P% @
    29. for i, v in dic.items():  y( |\" V2 X$ X5 R* G
    30.     if v == 1:
      8 \: b8 ^8 M1 |! E/ h) B# ~! E- I
    31.         print(i)+ k. o0 ~- G& N5 K- s; [8 ?
    32. #结果:
      # n9 S\" i4 e' j6 q: W) J
    33. #b0 i5 W; Q- u2 z$ E
    复制代码

" N0 ]: R$ G  ^6 w9 V' \; e8 |
" {3 Q4 I% ]! R0 G3 T/ m5 l
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-2 14:01 , Processed in 0.498589 second(s), 51 queries .

回顶部