Ich weiß, dass wir enumerate
für das Durchlaufen einer Liste verwenden, aber ich habe es in einem Wörterbuch versucht und es gab keinen Fehler.
CODE:
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
print(i, j)
AUSGABE:
0 0
1 1
2 2
3 4
4 5
5 6
6 7
Kann jemand die Ausgabe erklären?
Die erste Spalte der Ausgabe ist der Index jedes Elements in enumm
und die zweite Spalte ist deren Schlüssel. Wenn Sie Ihr Wörterbuch durchlaufen möchten, verwenden Sie .items ():
for k, v in enumm.items():
print(k, v)
Und die Ausgabe sollte folgendermaßen aussehen:
0 1
1 2
2 3
4 4
5 5
6 6
7 7
for k,v in dict.iteritems():
print(k,v)
Ich dachte nur, ich füge hinzu, wenn Sie den Index, den Schlüssel und die Werte eines Wörterbuchs aufzählen möchten, sollte Ihre for-Schleife folgendermaßen aussehen:
for index, (key, value) in enumerate(your_dict.items()):
print(index, key, value)
Neben den bereits bereitgestellten Antworten gibt es in Python ein sehr schönes Muster, mit dem Sie sowohl Schlüssel als auch Werte eines Wörterbuchs auflisten können.
Der Normalfall Sie Aufzählen der Schlüssel des Wörterbuchs:
example_dict = {1:'a', 2:'b', 3:'c', 4:'d'}
for i, k in enumerate(example_dict):
print(i, k)
Welche Ausgänge:
0 1
1 2
2 3
3 4
Wenn Sie jedoch sowohl durch Schlüssel als auch durch Werte auflisten möchten, ist dies der Weg:
for i, (k, v) in enumerate(example_dict.items()):
print(i, k, v)
Welche Ausgänge:
0 1 a
1 2 b
2 3 c
3 4 d
enumerate()
liefert beim Bearbeiten der Liste tatsächlich den Index und den Wert der Elemente in der Liste . Zum Beispiel:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i, j in enumerate(list):
print(i, j)
gibt
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
wobei die erste Spalte den Index des Elements und die zweite Spalte das Element selbst bezeichnet.
In einem Wörterbuch
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
print(i, j)
es gibt die Ausgabe
0 0
1 1
2 2
3 4
4 5
5 6
6 7
wobei die erste Spalte den Index der key:value
-Paare angibt und die zweite Spalte die keys
des Wörterbuchs enumm
.
Wenn Sie also möchten, dass die erste Spalte die keys
und die zweite Spalte als values
ist, sollten Sie dict.iteritems()
(Python 2) oder dict.items()
(Python 3)
for i, j in enumm.items():
print(i, j)
ausgabe
0 1
1 2
2 3
4 4
5 5
6 6
7 7
Voila
Das muss verwirrend erscheinen. Das ist also was los ist. Der erste Enumerationswert (in diesem Fall i) gibt den nächsten Indexwert zurück, beginnend bei 0, also 0, 1, 2, 3, ... Diese Zahlen werden immer zurückgegeben, unabhängig davon, was im Wörterbuch enthalten ist. Der zweite Wert von enumerate (in diesem Fall j) gibt die Werte in Ihrem Wörterbuch/in enumm zurück (wir nennen es in Python ein Wörterbuch). Was Sie wirklich tun möchten, ist, mit was roadrunner66 reagiert hat.
Da Sie enumerate
verwenden, ist Ihre i
tatsächlich der Index des Schlüssels und nicht der Schlüssel selbst.
In der ersten Spalte der Zeile 3
steht 3 4
, obwohl kein Schlüssel 3
vorhanden ist.
enumerate
durchläuft eine Datenstruktur (Liste oder ein Wörterbuch) und gibt gleichzeitig die aktuelle Iterationsnummer an.
Daher sind die Spalten hier die Iterationsnummer, gefolgt vom Schlüssel im Wörterbuch enum
Andere Lösungen haben bereits gezeigt, wie Schlüssel- und Wertepaare durchlaufen werden, sodass ich dasselbe in meinem nicht wiederholen werde.
Python3:
Eine Lösung:
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, k in enumerate(enumm):
print("{}) d.key={}, d.value={}".format(i, k, enumm[k]))
Output:
0) enumm.key=0, enumm.value=1
1) enumm.key=1, enumm.value=2
2) enumm.key=2, enumm.value=3
3) enumm.key=4, enumm.value=4
4) enumm.key=5, enumm.value=5
5) enumm.key=6, enumm.value=6
6) enumm.key=7, enumm.value=7
Ein anderes Beispiel:
d = {1 : {'a': 1, 'b' : 2, 'c' : 3},
2 : {'a': 10, 'b' : 20, 'c' : 30}
}
for i, k in enumerate(d):
print("{}) key={}, value={}".format(i, k, d[k])
Output:
0) key=1, value={'a': 1, 'b': 2, 'c': 3}
1) key=2, value={'a': 10, 'b': 20, 'c': 30}
d = {0: 'Null', '0': 'NULL', 1: 'Eins', '1': 'EINS'}
print ("Liste der aufgezählten d =", list (enumerate (d.items ())))
ausgabe: Liste der aufgezählten d = [(0, (0, 'Null')), (1, ('0', 'NULL')), (2, (1, 'Eins'), (3, ( '1 EINS'))]
dict.keys()
über seine Tasten zu iterieren.Schlüssel und Werte werden in einer beliebigen Reihenfolge, nämlich .__, durchlaufen. nicht zufällig, variiert je nach Python-Implementierung und hängt von der .__ ab. Einfügungen und Löschungen des Wörterbuchs. Wenn Schlüssel, Werte und Elementansichten werden ohne zwischengeschaltete Änderungen an der .__ durchlaufen. Wörterbuch wird die Reihenfolge der Elemente direkt entsprechen.
Deshalb sehen Sie in der ersten Spalte die Indizes 0 bis 7. Sie werden von enumerate
produziert und sind immer in der richtigen Reihenfolge. Weiter sehen Sie die Tasten 0 bis 7 des Diktats in der zweiten Spalte. Sie sind nicht sortiert.