7

重複の可能性:
リスト内の要素の頻度をカウントする方法は?

リスト内の同じ値の要素の数を数え、そのように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}

ヒストグラムのようなものだと思いますか?

4

4 に答える 4

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
于 2010-11-09T09:39:47.143 に答える
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
于 2010-11-09T09:10:44.380 に答える
4

countを使用して、リスト内の要素の数を取得し、一意の要素に設定します。

>>> l = [0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4]
>>> k = [(x, l.count(x)) for x in set(l)]
>>> k
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 4)]
>>> 
>>> 
>>> dict(k)
{0: 1, 1: 3, 2: 5, 3: 7, 4: 4}
>>> 
于 2010-11-09T09:12:58.453 に答える
0

Counterが存在する前は、groupbyがありました。

>>> a = map(int,[x**0.5 for x in range(20)])
>>> from itertools import groupby
>>> a_hist= dict((g[0],len(list(g[1]))) for g in groupby(a))
>>> a_hist
{0: 1, 1: 3, 2: 5, 3: 7, 4: 4}

(groupbyがこの目的で機能するには、入力リストaがソートされた順序である必要があります。この場合、aすでにソートされています。)

于 2010-11-09T14:14:25.963 に答える