2015-04-13 1 views
0

problème rapide ici. J'ai un dictionnaire comme celui-ci (avec plus d'entrées):Python - Lecture des valeurs des dictionnaires dans les dictionnaires

champlist = { 
     "Aatrox": { 
     "id": 266, 
     "title": "the Darkin Blade", 
     "name": "Aatrox", 
     "key": "Aatrox" 
     }, 
     "Thresh": { 
     "id": 412, 
     "title": "the Chain Warden", 
     "name": "Thresh", 
     "key": "Thresh" 
     } 
} 

Et j'aime lire tous les identifiants. Je suis en train comme ça

for champ in champlist: 
    print(champ['id']) 

Mais il dit:

print(champ['id']) TypeError: string indices must be integers

Il ne capte pas chaque « champion » comme un dictionnaire, mais comme une chaîne, toute aide avec cela? Merci!

Répondre

0

Vous ne pouvez pas itérer un dictionnaire de ce type. Essayez de itérer les valeurs à la place:

for champ in champlist.values(): 
    print(champ['id']) 

Pour être complet, juste clés:

for key in champlist.keys(): 
    print(key) 

ou si vous avez besoin valeur de clé combo:

for key, val in champlist.items(): 
    print('%s - %s', key, val) 

Il y a aussi identiques itervalues, iterkeys, et iteritems méthodes qui retournent les itérateurs au lieu des listes (mieux pour les grands obj.)

+0

Je ne peux pas vous upvote mais cela a fonctionné! Je vous remercie! – Nonitus

+0

Aucun prob, à peu près sûr que cela a frappé chaque nouveau développeur Python à un moment ou un autre –

1

Essayez ceci:

Variable = champlist['Thresh']['id'] 

Pour itérer: utiliser les iterkeys(), itervalues() ou iteritems() méthodes des dictionnaires. Pour plus d'informations, consultez le docs. :)

+0

Upvote pour les duels de réponse: P –

0

Essayez ça:

print [v['id'] for (k, v) in champlist.iteritems()]