2013-07-28 41 views
0

假設我有一個array如下轉換陣列字典(計數器)

arr = [1 , 2, 3, 4, 5] 

我想將它轉換爲dictionary

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

我這背後的動機是這樣我就可以迅速增加O(1)時間內任何鍵的計數。

幫助將不勝感激。由於

+0

您應該使用['Counter'](http://docs.python.org/2/library/collections.html#collections.Counter)。 –

+1

如果您使用Counter,請記住這會導致Counter-object而不是字典中。 – Hyperboreus

回答

2

您可以使用字典解析:

{k: 1 for k in arr} 
+0

錯誤的答案,這將始終有「1」作爲計數。 –

+0

據我瞭解OP的問題,這一步是初始化字典,以便將來增加計數。也許我們應該把答案錯誤或正確的決定留給OP本人。 – Hyperboreus

+0

這就是爲什麼我沒有downvote你的答案。 –

2
from collections import Counter 

arr = [1, 2, 3, 4, 5] 
c = Counter(arr) 
4
from collections import Counter 
answer = Counter(arr) 
1

嘗試collections.Counter

>>> import collections 
>>> arr = [1, 2, 3, 4, 5] 
>>> collections.Counter(arr) 
Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1}) 
3

可以使用fromkeys方法:

>>> arr = [1 , 2, 3, 4, 5] 
>>> dict.fromkeys(arr,1) 
{1: 1, 2: 1, 3: 1, 4: 1, 5: 1} 
>>> 
+1

有人會介意解釋他們在這個答案downvote? –

+0

我希望有一個錯誤...:D – Markon

+2

+1不使用計數器:) –