2016-06-13 9 views
0

Ich habe eine Zeichenfolge bestehend aus Leerzeichen getrennt nos: 5 4 4 2 2 8.Python Wörterbuch Comprehensions

Ich möchte ein Wörterbuch daraus erstellen, die die Anzahl der Zeiten haben würde, die jeweils nicht in der obigen Zeichenfolge angezeigt werden.

Ich versuche zuerst eine Liste aus der obigen Eingabezeile durch den folgenden Code zu konstruieren:

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

Jetzt i durch die oben aufgeführte Liste iterieren will dict Verständnis mit dem Wörterbuch zu erstellen.

Wie kann ich das gleiche tun, kann jemand bitte helfen?

+4

Sie können nicht finden http://stackoverflow.com/questions/37785412/count-number-of-words-in -a-Datei-using-dictionary-Verständnis-Python, das ähnlich ist. Verwenden Sie einen 'Counter'. –

+1

PLZ post was ist die Ausgabe, die Sie erreichen möchten. – AceLearn

Antwort

1

können Sie collections.Counter verwenden:

from collections import Counter 

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

occurrences = Counter(n) 

Wenn Sie nicht wollen, etwas importieren können Sie verwenden count:

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

unique = set(n) 

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

Ausgang:

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

Irgendein Grund für den Downvote? –

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

Sie nach Anzeige gefragt ict comp so dass das, was ich hier zeigen, aber ich stimme auch, dass dies ein Ort ist, ein Zähler oder ein Derivat zu verwenden:

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

Es funktioniert, indem zuerst die einzigartigen Elemente zu finden (durch eine set erstellen) dann mit die Liste count() Methode für jedes eindeutige Element der Eingabeliste.

1

Versuchen Sie mit 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' 

Funktion verwendet, um ein Wörterbuch zu erstellen:

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