Zählen mit einem Dictionary
Dictionaries eignen sich hervorragend zum Zählen. Angenommen, eine Klasse stimmt darüber ab, wohin der Klassenausflug gehen soll, und du hast die Stimmen in einer Liste:
stimmen = ["Zoo", "Burg", "Zoo", "Schwimmbad", "Zoo", "Burg"]Wie viele Stimmen hat jeder Ort bekommen? Erstelle ein Dictionary, dessen Schlüssel die Orte und dessen Werte ihre Stimmenzahlen sind. Beginne mit einem leeren Dictionary und gehe die Stimmen eine nach der anderen durch. Wenn der Ort schon im Dictionary steht, addiere 1 zu seiner Zahl; wenn er noch nicht dort steht, füge ihn mit der Zahl 1 hinzu:
stimmen = ["Zoo", "Burg", "Zoo", "Schwimmbad", "Zoo", "Burg"]
zaehler = {}
for stimme in stimmen:
if stimme in zaehler:
zaehler[stimme] += 1
else:
zaehler[stimme] = 1
print(zaehler){'Zoo': 3, 'Burg': 2, 'Schwimmbad': 1}Wozu das if? Bei der ersten Stimme steht "Zoo" noch nicht in zaehler. zaehler[stimme] += 1 müsste zuerst zaehler["Zoo"] lesen, und das Programm würde mit KeyError: 'Zoo' enden.
Mit .get() kannst du dasselbe in einer einzigen Zeile schreiben. zaehler.get(stimme, 0) liefert die bisherige Stimmenzahl des Ortes oder 0, wenn er noch nicht im Dictionary steht. Du addierst 1 dazu und speicherst das Ergebnis unter demselben Schlüssel:
stimmen = ["Zoo", "Burg", "Zoo", "Schwimmbad", "Zoo", "Burg"]
zaehler = {}
for stimme in stimmen:
zaehler[stimme] = zaehler.get(stimme, 0) + 1
print(zaehler){'Zoo': 3, 'Burg': 2, 'Schwimmbad': 1}Beide Versionen tun dasselbe; nimm die, die du besser verstehst. Die kürzere siehst du oft in fremdem Code.
Dasselbe funktioniert mit allem, was du mit einer for-Schleife durchlaufen kannst: den Wörtern einer Liste oder den Buchstaben eines Textes.
So schreibst du es:
Anweisungen
- 1
Zähle, wie oft jeder Buchstabe in
wortvorkommt. Erstelle ein leeres Dictionaryzaehler, gehe das Wort mit einerfor-Schleife Buchstabe für Buchstabe durch und zähle die Buchstaben wie im Beispiel. Gib dannzaehleraus:{'a': 5, 'b': 2, 'r': 2, 'k': 1, 'd': 1}. - 2
Gehe darunter mit
.items()durchzaehlerund gib die Buchstaben aus, die mehr als einmal vorkommen, jeden mit seiner Anzahl, zum Beispiela: 5.