簡體   English   中英

計算出現次數

[英]Count number of occurrences

我有以下數字列表:

l = [2L, 14L, 14L, 14L, 11L, 2L, 2L, 11L, 14L, 11L, 14L, 2L, 2L, 14L, ...]

我如何找出數字(例如2 )或多個數字(例如257 )的出現次數?

我要做的方式是使用for循環,但我確信這是一種更有效的方法。

collections.Counter創建一個字典,將值映射到它們出現的次數:

>>> from collections import Counter
>>> l = [2L, 14L, 14L, 14L, 11L, 2L, 2L, 11L, 14L, 11L, 14L, 2L, 2L, 14L]
>>> c = Counter(l)
>>> c
    Counter({14L: 6, 2L: 5, 11L: 3})
>>> c[14L]
    6
>>> l.count(2)
5

簡單如餡餅。 如果您有可以嘗試的數字列表,您可以嘗試,例如:

>>> {n: l.count(n) for n in [2, 5, 7]}
{2: 5, 5: 0, 7: 0}

如果你想要所有元素的計數,我會建議collections.Counter ,如另一個答案所述。

Collections.Counter是在py2.7中引入的,所以對於py 2.6及更早版本,你可以嘗試這樣的東西:

In [1]: l = [2L, 14L, 14L, 14L, 11L, 2L, 2L, 11L, 14L, 11L, 14L, 2L, 2L, 14L]

In [2]: dic={}

In [3]: for x in l:
   ...:     dic[x]=dic.get(x,0)+1
   ...:     

In [4]: dic
Out[4]: {2L: 5, 11L: 3, 14L: 6}

或使用defaultdict (在py2.5中引入):

In [6]: from collections import defaultdict

In [7]: dic=defaultdict(int)

In [8]: for x in l:
    dic[x]+=1
   ...:     

In [9]: dic
Out[9]: defaultdict(<type 'int'>, {2L: 5, 11L: 3, 14L: 6})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM