Python字典理解

时间:2016-06-13 09:30:26

标签: python

我有一个由空格分隔的字符串组成的字符串:5 4 4 2 2 8

我想构建一个字典,这个字典在上面的字符串中没有出现过。

我首先尝试通过以下代码构造上述输入行的列表:

nos = input().split(" ")
print (nos)

现在我想使用dict comprehension迭代上面的列表来创建字典。

我怎么能这样做,有人可以帮忙吗?

5 个答案:

答案 0 :(得分:3)

你要求提供一个dict comp以便我在这里展示,但我也同意这是一个使用Counter或衍生物的地方:

nos = input().split()
my_dict = {k: nos.count(k) for k in set(nos)}

首先找到唯一元素(通过创建set),然后对输入列表的每个唯一元素使用列表count()方法。

答案 1 :(得分:1)

from collections import Counter
Counter('5 4 4 2 2 8'.split(' '))

答案 2 :(得分:1)

您可以使用collections.Counter

from collections import Counter

n = "5 4 4 2 2 8"
n = n.split(" ")

occurrences = Counter(n)

如果您不想导入任何内容,可以使用count

n = "5 4 4 2 2 8"
n = n.split(" ")

unique = set(n)

occurences = {i:n.count(i) for i in unique}

输出:

{'4': 2, '2': 2, '5': 1, '8': 1}

答案 3 :(得分:1)

尝试使用Counter;

>>> import collections
>>> input_str = '5 4 4 2 2 8'
>>> dict(collections.Counter(input_str.split(" ")))
{'4': 2, '2': 2, '8': 1, '5': 1}

答案 4 :(得分:0)

str1 = '5 4 4 2 2 8'

用于创建字典的函数:

def func_dict(i, dict):
  dict[i] = dict.get(i, 0) + 1
  return dict

d = dict()
( [ func_dict(i, d) for i in str1.split() ] )
print "d :", d