我有一个由空格分隔的字符串组成的字符串:5 4 4 2 2 8
。
我想构建一个字典,这个字典在上面的字符串中没有出现过。
我首先尝试通过以下代码构造上述输入行的列表:
nos = input().split(" ")
print (nos)
现在我想使用dict comprehension迭代上面的列表来创建字典。
我怎么能这样做,有人可以帮忙吗?
答案 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