计算Python中相同值的元素数量

The*_*dor 7 python counter histogram

可能重复:
如何计算列表中元素的频率?

我希望计算列表中相同值的元素数量并返回一个dict:

> a = map(int,[x**0.5 for x in range(20)])
> a
> [0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4] 

> number_of_elements_by_value(a)
> {0:1, 1:3, 2:5, 3:7, 4:4}
Run Code Online (Sandbox Code Playgroud)

我想这是一种直方图?

Joh*_*ooy 8

这是一个很好的方式,如果没有你就collections.Counter可以

from collections import defaultdict
d = defaultdict(int)
a = map(int, [x**0.5 for x in range(20)])
for i in a:
    d[i] += 1

print d
Run Code Online (Sandbox Code Playgroud)


Bjö*_*lex 7

使用柜台:

>>> from collections import Counter

>>> a = map(int,[x**0.5 for x in range(20)])
>>> a
[0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4] 
>>> c = Counter(a)
>>> c[2]
5
Run Code Online (Sandbox Code Playgroud)