Je sais que nous utilisons enumerate
pour itérer une liste, mais je l’ai essayée dans un dictionnaire et cela n’a donné aucune erreur.
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)
SORTIE:
0 0
1 1
2 2
3 4
4 5
5 6
6 7
Quelqu'un peut-il expliquer la sortie?
La première colonne de sortie est l'index de chaque élément dans enumm
et la seconde ses clés. Si vous voulez parcourir votre dictionnaire, utilisez .items ():
for k, v in enumm.items():
print(k, v)
Et le résultat devrait ressembler à:
0 1
1 2
2 3
4 4
5 5
6 6
7 7
for k,v in dict.iteritems():
print(k,v)
En plus des réponses déjà fournies, il existe un modèle très agréable en Python qui vous permet d’énumérer les clés et les valeurs d’un dictionnaire.
Le cas normal vous énumérer les clés du dictionnaire:
example_dict = {1:'a', 2:'b', 3:'c', 4:'d'}
for i, k in enumerate(example_dict):
print(i, k)
Quelles sorties:
0 1
1 2
2 3
3 4
Mais si vous voulez énumérer à la fois par les clés et les valeurs c'est le chemin:
for i, (k, v) in enumerate(example_dict.items()):
print(i, k, v)
Quelles sorties:
0 1 a
1 2 b
2 3 c
3 4 d
enumerate()
lorsqu’on travaille sur une liste donne l’index et la valeur des éléments de la liste . Par exemple:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i, j in enumerate(list):
print(i, j)
donne
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
où la première colonne indique l'index de l'élément et la deuxième colonne, les éléments eux-mêmes.
Dans un dictionnaire
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
print(i, j)
ça donne la sortie
0 0
1 1
2 2
3 4
4 5
5 6
6 7
où la première colonne donne l'index des paires key:value
et la deuxième colonne indique la keys
du dictionnaire enumm
.
Donc, si vous voulez que la première colonne soit la keys
et que la deuxième colonne soit values
, essayez plutôt dict.iteritems()
(Python 2) ou dict.items()
(Python 3)
for i, j in enumm.items():
print(i, j)
sortie
0 1
1 2
2 3
4 4
5 5
6 6
7 7
Voila
Cela doit paraître déroutant. C'est donc ce qui se passe. La première valeur de énumération (dans ce cas i) renvoie la valeur d'index suivante commençant à 0, donc 0, 1, 2, 3, ... Elle renverra toujours ces chiffres, quel que soit le contenu du dictionnaire. La deuxième valeur d'énumérer (dans ce cas j) renvoie les valeurs de votre dictionnaire/enumm (nous l'appelons un dictionnaire en Python). Ce que vous voulez vraiment faire, c’est avec quoi roadrunner66 a répondu.
Puisque vous utilisez enumerate
, votre i
est donc l'index de la clé plutôt que la clé elle-même.
Donc, vous obtenez 3
dans la première colonne de la ligne 3 4
pendant qu'il n'y ait pas de clé 3
.
enumerate
itère via une structure de données (liste ou dictionnaire) tout en fournissant le numéro d'itération actuel.
Par conséquent, les colonnes ici sont le numéro d'itération suivi de la clé du dictionnaire enum
D'autres solutions ont déjà montré comment parcourir la paire clé/valeur, je ne vais donc pas répéter la même chose dans la mienne.
Python3:
Une solution:
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
Un autre exemple:
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}
dict.keys()
Les clés et les valeurs sont itérées dans un ordre arbitraire qui est non aléatoire, varie selon les implémentations Python et dépend du l’historique des insertions et des suppressions dans le dictionnaire. Si clés, valeurs et Les vues des éléments sont réitérées sans modification intermédiaire du dictionnaire, l'ordre des éléments correspondra directement.
C'est pourquoi vous voyez les indices 0 à 7 dans la première colonne. Ils sont produits par enumerate
et sont toujours dans le bon ordre. Plus loin, vous voyez les touches 0 à 7 du dict dans la deuxième colonne. Ils ne sont pas triés.