QQ登录

只需要一步,快速开始

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

Python collections模块之Counter()详解

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  • 计数器(Counter6 V/ {( y/ |7 p
    dict的子类,计算可hash的对象
    8 `: K- _: s  ^: p: B! Q6 B请点击Counter- o( w9 ^1 h- R) Q4 \7 p& r) \

    Counter()

    主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。
    3 H( Q7 ^+ c& e; J5 |6 |+ @' n7 z

    1. from collections import Counter: A/ |4 v7 w) t& B+ Q
    2. + |$ P% P6 q\" P- g3 h
    3. list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]2 l  d( }8 h6 W' @9 B
    4. dic = Counter(list1)+ q, @/ r\" L9 e' \
    5. print(dic): H5 ^6 M/ w2 U2 y
    6. #结果:次数是从高到低的
      9 D8 D  r8 {' E/ l5 k: d7 L8 Y
    7. #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})2 ]6 M- a+ ]2 O+ I

    8. 3 s  Z- o1 @0 G
    9. print(dict(dic))
      0 Y$ U6 _* A# |- ]( ?( B! }
    10. #结果:按字母顺序排序的) |; t* J& f* ^! C: u\" |
    11. #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}
        h/ Y* u  j1 L% R& u
    12. % c2 m+ ^& C9 O1 k1 {9 M
    13. print(dic.items()) #dic.items()获取字典的key和value( C5 N8 r, v2 p3 s% A% S  p- L  j\" N
    14. #结果:按字母顺序排序的
      1 @\" V) a6 m$ N8 b3 M( f7 j
    15. #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)]); g3 h; s\" w1 U1 l6 F  H

    16. : I: Y( X4 z) [% ]2 `
    17. print(dic.keys())
      % d\" {: N: Z: ]% A: o7 i: B
    18. #结果:# ?% D4 L9 q0 }6 f! \6 K3 y
    19. #dict_keys(['a', 'b', 'c', 'f', 'g'])
      + F* Z+ P. ?  L* s2 }! G

    20. 9 i+ ~) r# B3 s' w/ k4 ]2 X
    21. print(dic.values())
      ' z' p! m\" a8 \, I
    22. #结果:+ j: h2 V9 K: q& I$ m- m
    23. #dict_values([3, 1, 2, 2, 3])
        J8 `0 }: g! H

    24. $ q\" W7 ^. Y3 |, q; @
    25. print(sorted(dic.items(), key=lambda s: (-s[1])))
      ) r% z- |# ~4 F6 M
    26. #结果:按统计次数降序排序7 x  x\" j. b. D- F+ y1 q* o& D
    27. #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]' E9 Z7 e4 Q' i# B; J) `8 f

    28. + u: ]# o5 q$ }0 s9 `' P
    29. for i, v in dic.items():. C& r3 T/ t0 E
    30.     if v == 1:  b. j% e$ d  B: x* t5 H
    31.         print(i)
      8 j: R- C8 U) |
    32. #结果:
      ; D* |\" `\" z) Z6 S7 C
    33. #b
      ; ~5 M( O' b* j, J
    复制代码

% Q6 t+ }: d* a; V) S+ y  T; ~7 Y4 k. p1 Q
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-4-10 13:45 , Processed in 0.391432 second(s), 51 queries .

回顶部