0

假设我有array如下

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

我想把它转换成一个dictionarylike

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

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

帮助将不胜感激。谢谢

4

6 回答 6

4
from collections import Counter
answer = Counter(arr)
于 2013-07-28T19:45:54.997 回答
4

您可以使用fromkeys方法:

>>> arr = [1 , 2, 3, 4, 5]
>>> dict.fromkeys(arr,1)
{1: 1, 2: 1, 3: 1, 4: 1, 5: 1}
>>> 
于 2013-07-28T19:46:35.967 回答
3

您可以使用字典理解:

{k: 1 for k in arr}
于 2013-07-28T19:56:03.677 回答
2
from collections import Counter

arr = [1, 2, 3, 4, 5]
c = Counter(arr)
于 2013-07-28T19:45:51.690 回答
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})
于 2013-07-28T19:46:29.770 回答
0
arr = [1 , 2, 3, 4, 5]
print({p: arr.count(p) for p in arr})

我认为它更精确,并且当数组中的元素重复时它仍然有效。

于 2020-11-01T17:31:00.597 回答