An die Python Programmierer: Frage zu Dictionnary und enumerate?

2 Antworten

enumeriert 'dekoriert' die Einträge eines iterable mit dem Index. Eine aus meiner Sicht bessere Formulierung wäre gewesen:

for i,v in enumerate(liste):

Das zunächst leer instanziierte Dictionary wird dann mit den Einträgen der Liste so befüllt, daß der Eintrag der Schlüssel und sein Index der Wert ist. Wozu auch immer.

Man könnte das auch so machen:

def dicEnu(liste):
    return dict((v,i) for i,v in enumerate(liste))

Hier zur Demonstration:

>>> liste
[3, 6, 1, 2, 6, 0]
>>> dict((v,i) for i,v in enumerate(liste))
{3: 0, 6: 4, 1: 2, 2: 3, 0: 5}

Wobei das Ergebnis ein wenig anders ist als bei der gezeigten Variante, wenn ein item in der Liste mehrfach vorkommen sollte.

Da wird bei der Zuweisung, wenn noch kein Eintrag vorhanden ist, ein neuer für diesen Key angelegt.

Da steht dann ein Eintrag im Dictionary, für den Key (hier value) und in diesem Eintrag wird diesem Key ein Wert (hier i) zugeordnet.