Geht inkrementieren bei dictionarys nur durch for schleifen?

4 Antworten

Weil du in Beispiel 2 den Key hier festlegst

dict_var[zeichen] = 1

In Beispiel 1 kennt python den Key "1" noch nicht, kann den daher auch noch inkrementieren. Wenn du vor dem Inkrementieren

buchstabendict["i"] = 1

schreibst, sollte es funktionieren.

Woher ich das weiß:Hobby – Entwickle seit ca 5 J. Software in vers. Programmiersprachen

Dictionaries in Python sind wie assoziative Arrays in PHP oder C#. Es sind "key:value"-Paare. Du kannst über die keys loopen, um die Werte zu erhalten. Oder direkt den Key ansprechen.

Bsp. 1 funktioniert nicht wie es andere schon beschrieben haben.

Bsp. 2 wird wohl fehlerfrei durchlaufen, ist jedoch irgendwie sinnfrei.

Woher ich das weiß:Berufserfahrung – > 20 Jahre in der Softwareentwicklung
buchstabe = 'i'
buchstabendict = {}
buchstabendict["i"]+=1 #AUSGABE: keyerror
buchstabendict[buchstabe]+=1 #AUSGABE: keyerror

Der Grund ist: Der Schlüssel existiert noch nicht, sofern der Schlüssel existiert, dann kann der Wert (falls numerisch) natürlich auch inkrementiert werden.

Eine Formulierung die funktioniert, aber kein direktes Inkrement mehr ist:

dict[key]=d.get(key,0)+1

Ansonsten wäre für Dein Beispiel 2 natürlich noch collections.Counter interessant ;-).

Das hat mit Schleifen nicht viel zu tun.

Dein Beispiel 1 funktioniert nicht, weil du versuchst einen nicht existierenden Wert zu erhöhen.