web-dev-qa-db-fra.com

Énumérer le dictionnaire clé de itération et valeur

J'ai un dictionnaire appelé regionspointcount qui contient les noms de région (str) en tant que clés et le nombre d'un type d'entité dans cette région (int) en tant que valeurs, par exemple {'Highland':21}.

Je veux itérer la clé et la valeur du dictionnaire en énumérant. Y a-t-il un moyen de faire quelque chose comme:

for i, k, v in enumerate(regionspointcount.items()):

ou dois-je recourir à une variable de nombre?

9
Worm

Avec un dictionnaire d:

d
# {'A': 1, 'B': 2, 'C': 3, 'D': 4}

Vous pouvez utiliser un tuple pour décompresser les paires clé-valeur dans l'en-tête de la boucle for.

for i, (k, v) in enumerate(d.items()):
     print(i, k, v)

# 0 A 1
# 1 B 2
# 2 C 3
# 3 D 4

Pour comprendre pourquoi les parenthèses supplémentaires sont nécessaires, examinez le résultat brut de enumerate:

list(enumerate(d.items()))
# [(0, ('A', 1)), (1, ('B', 2)), (2, ('C', 3)), (3, ('D', 4))]

Les paires clé-valeur sont regroupées dans des n-uplets et doivent donc être décompressées de la même manière.

14
coldspeed

En supposant que vous souhaitiez simplement énumérer les paires clé/valeur (et que vous n'avez pas besoin de l'index i), vous pouvez utiliser iter():

d={'A': 1, 'B': 2, 'C': 3, 'D': 4}
for k,v in iter(d.items()):
    print(k,v)

Cela imprime quelque chose comme

A 1
C 3
B 2
D 4

Notez que les entrées ne sont pas nécessairement commandées.

3
Adrian W