web-dev-qa-db-de.com

aufzählung () für Wörterbuch in Python

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?

22
Aditya Krishn

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
37
user4754843
for k,v in dict.iteritems():
    print(k,v)
8
roadrunner66

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)
8
Jordan Mackie

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
6
João Almeida

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

2
Abhishek Roy

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.

1
Mr. Me

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. 

1
Ankur Ranjan

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}
0

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'))]

0
user3358337
  1. Wenn Sie ein Python-Diktat durchlaufen, bedeutet es, auf dieselbe Weise wie bei dict.keys() über seine Tasten zu iterieren.
  2. Die Reihenfolge der Schlüssel wird durch den Implementierungscode bestimmt und Sie können keine bestimmte Reihenfolge erwarten:

    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.

0
VPfB