2016-06-13 143 views
0

我有一個字符串,由空格分隔的nos組成:5 4 4 2 2 8Python字典解析

我想建立一個字典,這將有沒有每次沒有出現在上面的字符串中的時間。

我第一次嘗試通過下面的代碼來構建一個清單出來上面的輸入線:

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

現在我想通過使用字典理解創建字典上面的列表進行迭代。

我該如何做同樣的事,有人可以幫忙嗎?

+4

你不能見http://stackoverflow.com/questions/37785412/count-number-of-words-in -a-file-using-dictionary-comprehension-python,它與之類似。使用「計數器」。 –

+1

plz post你想要達到的輸出是什麼。 – AceLearn

回答

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} 
+1

downvote的任何理由? –

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

你要求廣告ICT補償所以這就是我將在這裏展示,但我也同意,這是使用計數器或衍生物的地方:

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

它的工作原理是首先找到的獨特元素(通過創建一個set),然後使用對於輸入列表的每個唯一元素,列表count()方法。

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} 
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