计数器(Counter)
( L1 Y3 _2 q6 |0 N5 E$ e/ Sdict的子类,计算可hash的对象
6 l& P; a8 U! ^* M请点击Counter
) ~; C; n' l/ M( Q: `' k" @
Counter()主要功能:可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。, T3 ]. x5 Q& m
- from collections import Counter
* K7 w; h1 q8 G4 Z0 j
! _, F0 L7 j9 D9 p4 X! O- list1 = ["a", "a", "a", "b", "c", "c", "f", "g", "g", "g", "f"]5 E+ m5 S; _* Y" ?# Z9 T5 T
- dic = Counter(list1)
# Q/ E* G9 U4 W, M - print(dic)% k1 X% m# m% y0 A5 }
- #结果:次数是从高到低的
: J# }: A. S3 h! U- R! `, c" `( b0 b, f - #Counter({'a': 3, 'g': 3, 'c': 2, 'f': 2, 'b': 1})1 O! G+ s) f! b1 N2 b2 `
- 4 a! b T+ A2 r% Z% F
- print(dict(dic))( M6 S9 p$ M. X1 D5 y) F4 Q# ` v: X
- #结果:按字母顺序排序的( h$ R6 g* c2 f* L% m
- #{'a': 3, 'b': 1, 'c': 2, 'f': 2, 'g': 3}5 v& Z( C/ h$ W- e7 I
- * n8 r7 W' T. P2 n
- print(dic.items()) #dic.items()获取字典的key和value
3 {$ J/ h/ E0 _; {! z' B - #结果:按字母顺序排序的
2 V2 l0 h& q4 o V& b& I, F& i9 a - #dict_items([('a', 3), ('b', 1), ('c', 2), ('f', 2), ('g', 3)])% H& R4 H `0 @ ~7 p3 U, N8 ^
; t; _+ G! m% j/ {' c: N# x, o- print(dic.keys())# V5 S3 e1 v' q* |; V
- #结果:- ~. [ z" B; J/ e
- #dict_keys(['a', 'b', 'c', 'f', 'g'])
9 m4 q6 l% S7 t3 Y# ^* h) h
a+ U. N: }+ E9 H% H- print(dic.values())' g- j3 M) Z S8 g) M$ H
- #结果:
% x3 q& t+ d* k& U" p% c, ~& Y0 | - #dict_values([3, 1, 2, 2, 3])- ~0 c1 l2 d$ \2 o
- 1 N, f. ]5 b" d" |
- print(sorted(dic.items(), key=lambda s: (-s[1])))
: D3 ]9 @1 c" a7 H0 Y - #结果:按统计次数降序排序
& C. P3 t) }* T/ [) x - #[('a', 3), ('g', 3), ('c', 2), ('f', 2), ('b', 1)]$ M; d. ?$ m- r! k
8 {( C0 a, i/ I8 G: E# R) D- for i, v in dic.items():
( v, B' Q0 V @6 u* o1 t; P. i8 [ - if v == 1:
( e) `9 [8 h* O2 ?& z - print(i)
* ?' n' @* u+ t& J$ @% N/ V( v/ e - #结果:
2 g3 e8 u# L s- w s - #b% l; g8 A& e7 ^" V. L' U& o' |- R8 C
复制代码