Ich habe eine Liste von Werten und möchte sie in ein Dictionary einfügen, das jeden Wert seinem Index zuordnet.Pythonische Art, Listenelemente mit ihren Indizes zu verknüpfen
Ich kann es auf diese Weise tun:
>>> t = (5,6,7)
>>> d = dict(zip(t, range(len(t))))
>>> d
{5: 0, 6: 1, 7: 2}
dies ist nicht schlecht, aber ich bin für etwas elegantere suchen.
ich über die folgenden gekommen sind, aber es macht das Gegenteil von dem, was ich brauche:
>>> d = dict(enumerate(t))
>>> d
{0: 5, 1: 6, 2: 7}
Sie bitte Ihre Lösungen teilen,
Danke
EDIT: Python 2.6.4
Für Listen, die 1000 Elemente enthalten, ist die dict (zip) Version die schnellste, der Generator und die Liste Verständnis Versionen sind praktisch identisch und sie sind ~ 1,5 mal langsamer und die Funktionskarte (umgekehrt) ist wesentlich langsamer.
$ python -mtimeit es "t = range (int (1e3))" "d = dict (zip (t, Bereich (len (t))))"
1000 Schleifen, am besten von 3: 277 usec pro Schleife
$ Python -mtimeit es "t = range (int (1E3))", "d = dict ([(y, x) für x, y in aufzählen (t)])"
1000 loops, best of 3: 426 usec pro Schleife
$ python -mtime it -s "t = range (int (1e3))" "d = dict ((y, x) für x, y in enumerate (t)) "
1000 Schleifen, best of 3: 437 Usec pro Schleife
$ python -mtimeit -s "t = Bereich (int (1e3))" "d = dict (Karte (umgekehrt, enumerieren (t)))"
100 Schleifen, best of 3: 3,66 ms pro Schleife
Ich habe versucht, die gleichen Tests für längere und für kürzere Listen (1e2, 1e4, 1e5) und die Zeit pro Schleife läuft linear mit der Länge der Liste.
Könnte jemand Zeit py 2.7+ Version?
Ich bin neugierig - welche der Implementierungen ist schneller? Übrigens, Chewy, welche Version von Python benutzt du? –