J'importe un dictionnaire imbriqué à partir d'un fichier externe et j'essaie d'accéder aux valeurs au niveau le plus profond; Cependant, lorsque je tente d'utiliser des boucles for
je reçois l'erreur suivante:Accès au dictionnaire imbriqué dans Python 3.5
print(country['unicode'])
TypeError: string indices must be integers
Le dictionnaire que je importe (à partir d'un fichier emojiFlags.py
) ressemble à ceci:
flagSet = {'emojiFlagSet': {'Andorra': {'emoji': '', 'unicode':
'U+1F1E6 U+1F1E9'}, 'Afghanistan': {'emoji': '', 'unicode': 'U+1F1E6
U+1F1EB'}, ... }}
etc., etc.
Voici les extraits de code avec lesquels je travaille:
from emojiFlags import flagSet
# Get country emoji data
for country in flagSet['emojiFlagSet']:
print(country['unicode'])
Je suis assez c J'ai déjà fait quelque chose comme ça sur un certain nombre d'autres dictionnaires (et je n'ai eu aucun problème), et je me demande s'il y a quelque chose d'évident qui me manque à ce stade.
Bizarrement, si je print(flagSet)
, mon retour est emojiFlagSet
(la clé), pas sa valeur (un dictionnaire); cependant, si je print(flagSet['emojiFlagSet'])
le retour est la valeur du dictionnaire imbriqué entier comme il se doit. Si je tente à la place
for country in flagSet['emojiFlagSet']:
print(country)
Je reçois tous les noms de pays, mais, tout comme avec la déclaration print(flagSet)
, je ne reçois que les clés et non leurs valeurs dictionnaire imbriquées.
Mon but final est de simplement retourner la valeur des clés 'unicode'
dans le dictionnaire de chaque pays. Donc, je m'attendrais à voir
U+1F1E6 U+1F1E9
pour le premier pays, par exemple.
Strangest de tous, si je fais un test simple
print(flagSet['emojiFlagSet']['Andorra']['unicode'])
, j'obtenir exactement ce que je cherche. Des suggestions sur où je vais mal dans ma boucle for
?
Effectue l'itération sur '.values ()'? 'print (flagSet ['emojiFlagSet'] [pays] ['unicode'])'? – jonrsharpe
@jonrsharpe juste vu votre commentaire ... merci pour les commentaires! Il semble que ceci (votre deuxième suggestion) est ce que j'ai utilisé avant et juste oublié –