将数组转换为字典(计数器)

时间:2013-07-28 19:43:59

标签: python

假设我有array如下

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

我想将其转换为dictionary之类的

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

我的动机是这样我可以在O(1)时间内快速增加任何键的数量。

非常感谢帮助。感谢

6 个答案:

答案 0 :(得分:4)

from collections import Counter
answer = Counter(arr)

答案 1 :(得分:4)

您可以使用fromkeys方法:

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

答案 2 :(得分:2)

from collections import Counter

arr = [1, 2, 3, 4, 5]
c = Counter(arr)

答案 3 :(得分:2)

您可以使用词典理解:

{k: 1 for k in arr}

答案 4 :(得分: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})

答案 5 :(得分:0)

arr = [1 , 2, 3, 4, 5]
print({p: arr.count(p) for p in arr})

我认为更精确,当数组中的元素重复时,它仍然可以工作。