2016-10-15 1 views
0

Ich habe versucht, die Werte in einem Wörterbuch in Bezug auf den Schlüssel zu zählen. Allerdings konnte ich das gewünschte Ergebnis nicht erreichen.Python zählen mehrere Werte im Wörterbuch der Liste

from collections import Counter 
d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John} 
# create a list of only the values you want to count, 
# and pass to Counter() 
c = Counter([values[1] for values in d.itervalues()]) 
print c 

Meine Ausgabe:: Ich werde im Folgenden mit mehr Details zeigt

Counter({'Adam': 2, 'John': 1}) 

Ich will es alles in der Liste zählen, nicht nur ersten Wert in der Liste. Außerdem möchte ich, dass mein Ergebnis in Bezug auf den Schlüssel ist. Ich werde Ihnen meine gewünschte Ausgabe unten zeigen:

{'a': [{'Adam': 1, 'John': 2}, 'b':{'John': 2, 'Joel': 1}, 'c':{'Adam': 2, 'John': 1 }]} 

Ist es möglich, diese gewünschte Ausgabe zu bekommen? Oder etwas in der Nähe? Ich würde gerne alle Vorschläge oder Ideen begrüßen, die Sie haben. Vielen Dank.

+0

Dies wurde oft gefragt. –

+0

Hallo Marcus, ich habe stundenlang online nach einer Lösung gesucht. Leider konnte ich es nicht finden. Könnte es mir einen Link dazu geben? Vielen Dank. – user3271404

Antwort

0

Versuchen Sie dies mit dict comprehension

from collections import Counter 
d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John'} 
c = {i:Counter(j) for i,j in d.items()} 
print c 
+0

Hallo, redest du weiter? Es tut uns leid. Ich bin noch neu bei Python. Vielen Dank! – user3271404

+0

Ist es Ihre Wunschlösung? Sehen Sie sich 'python dict comprehension' und https://docs.python.org/2/library/collections.html#collections.Counter an. Es ist einfach – itzMEonTV

+0

Entschuldigung. Ich könnte anhand des von Ihnen angegebenen Links Informationen zum Verständnis des Diktats finden. Hast du mir einen falschen Link gegeben? – user3271404

1

Sie sind nur die ersten Elemente in der jeweiligen Liste mit values[1] Kommissionierung, stattdessen Sie durch die einzelnen Werte zu durchlaufen ein for mit, dass das erste folgt:

>>> from collections import Counter 
>>> d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John']} 
>>> Counter([v for values in d.itervalues() for v in values]) # iterate through each value 
Counter({'John': 4, 'Adam': 4, 'Joel': 1}) 
+0

Hallo, deine Lösung ist großartig. Ist es jedoch möglich, das Ergebnis, das mit dem Wörterbuch verknüpft ist, nach außen zu erzeugen? Zum Beispiel '{'a': [{'Adam': 1, 'John': 2}' Danke! – user3271404

Verwandte Themen