1
votes

l'accès à un dict imbriqué échoue

J'ai un dict imbriqué que je construis sur une période de plusieurs processus. Pour construire le dict, je le passe à certaines fonctions, le remplis et le renvoie. Avec une seule entrée, le dict est construit comme tel:

{K: {K: V, K: V}}

Pour un exemple proche du monde réel:

for k,v in mydict.items():
    print(mydict[k])

Si je print (mydict) je vois exactement comme je m'y attendais. Cependant, lorsque j'essaye de parcourir le dict, je ne parviens pas à obtenir les valeurs de mon dict imbriqué en utilisant ce qui suit:

for k,v in mydict.items():
    print(mydict[k][text])

J'obtiens à la place l'erreur:

NameError: le nom 'texte' n'est pas défini

Mais quand j'effectue les opérations suivantes, cela fonctionne:

mydict = {"www.google.com": {"date":"1/1/19","text":"moo"},
          "www.yahoo.com": {"date":"1/2/19","text":"woof"}}

On me présente des résultats tels que:

{"date": "1/1/19", "text": "moo"}

{"date": "1/2/19", "text ":" woof "}

Qu'est-ce que je fais de mal?


1 commentaires

Oh mec vivant! C'est toujours si évident une fois que quelqu'un le souligne. Merci


3 Réponses :


2
votes

Vous devez citer le "texte" sinon il est pris comme nom de variable

print(mydict[k]['text'])


0 commentaires

1
votes

Vous devez utiliser "text" au lieu de text .

moo
woof

mydict = {"www.google.com":{"date":"1/1/19","text":"moo"},
      "www.yahoo.com":{"date":"1/2/19","text":"woof"}}

for k,v in mydict.items():
    print(mydict[k]["text"])


0 commentaires

1
votes

Vous avez manqué les guillemets " dans votre texte : voici le bon

for k,v in mydict.items():
    print(mydict[k]["text"])


1 commentaires

Il ne manque pas de guillemets doubles. Il manque une citation en général, qu'elle soit simple ou double.