2013-07-28 43 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不使用计数器:) –