2015-09-09 47 views
0

我正在嘗試編寫一個函數,該函數接受一個數組並返回一個dictonary,其中包含表示列表中唯一值的鍵和值,該值是列表中每個項的計數。用Python中的字典進行頻率映射

def freq(arr): 
    sum = 0 
    dict = {} 
    for i in arr: 
     if i not in dict: 
      dict[i] = 1 
     else: 
      dict[i] =+ 1  
    return dict   

print(count([1,2,3,4,5,100,100,1000])) 

{1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 1000: 1, 100: 1} 

我希望的

{1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 1000: 1, 100: 2} 
+0

由於'= + 1'而不是'+ = 1',它不工作。 – Delgan

+0

儘量不要在python內建函數('dict','list'等)之後命名你的變量。 – tzaman

+0

'count'做什麼?你能提供那個功能嗎?或者如果它是內置函數,那它是哪一個?你不需要它順便說一句。 –

回答

3

collections.Counter已經做了你想要的東西。

from collections import Counter 
c = Counter([1,2,3,4,5,100,100,1000]) 
print(c) 
# Counter({100: 2, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 1000: 1}) 
+0

和字典(c)將返回所需的字典。 – Alexander

+0

'Counter'是一個'dict'子類,所以它應該可以互換使用,但是,如果無論出於什麼原因都需要一個簡單的'dict',那麼它就可以工作。 – tzaman