0
votes

Comment utiliser la méthode .get () pour obtenir un article dans une liste dans un dictionnaire?

J'ai cette

car = {'certificates': [{'exp_date':'1928'}]}

x = car.get("certificates"[0][0])

print(x)


1 commentaires

Ceci est une liste de dict , afin d'obtenir 1928, vous devez accéder à la dicte interne avec voiture ["certificats"] [0] ["exp_date "]


4 Réponses :


0
votes

Vous devez modifier ceci: xxx

à ceci (pas besoin d'utiliser obtenir ): xxx < p> dict s est indexé par clé, pas numéro (sauf si la clé est un nombre). Ce que vous faisiez, l'indexation est-elle comme si c'était une liste .


1 commentaires

Merci d'avoir répondu, mais c'était un exemple simplifié pour transmettre ce que j'essaie de faire. En réalité, je semer un fichier JSON SO .get () est essentiel autant de fois que les données ne sont pas les mêmes et les valeurs NULL sont renvoyées à l'origine d'une erreur.



0
votes

Pas besoin d'utiliser Get Ici, vous pouvez simplement utiliser:

1928


1 commentaires

Merci d'avoir répondu, mais c'était un exemple simplifié pour transmettre ce que j'essaie de faire. En réalité, je semer un fichier JSON SO .get () est essentiel autant de fois que les données ne sont pas les mêmes et les valeurs NULL sont renvoyées à l'origine d'une erreur.



1
votes

cela fonctionne: xxx


0 commentaires

1
votes

La fonction dict.get attend une clé et une valeur par défaut et renvoie la valeur associée à la clé à partir du dictionnaire s'il existe autrement. (Vous trouvez la documentation de la fonction directement dans Python avec Aide (dict.get) )

Nous pouvons essayer d'obtenir comment la ligne importante de votre code fonctionne étape par étape: xxx

la bonne façon d'atteindre ce que vous voulez serait: xxx

addendum : Que se passe-t-il quand quelque chose passe mal?

La fonction obtenez ne pose pas d'erreur dans le cas où la touche n'existe pas mais renvoie la valeur par défaut, vous devez donc vous demander à quels cas Vous voulez une erreur et dans laquelle voulez-vous une valeur par défaut

  1. Obtenez une erreur lorsqu'il n'y a pas de certificat ni de date d'expiration:

    Car ["Certificats"] [0] ["Exp_Date"]
  2. Obtenez la valeur par défaut (disons 0) s'il existe un certificat, mais une erreur si le certificat n'a pas de date d'expiration
    car.get ("certificat", [{"exp_date": 0}]) [0] ["exp_date"]
  3. Obtenez une erreur s'il n'y a pas de certificat, mais une valeur par défaut si le certificat n'a pas de date d'expiration
    voiture ["certificat"] [0] .get ("exp_date", 0)
  4. Obtenez une valeur par défaut dans les deux cas
    car.get ("certificat", [{}]) [0] .get ("exp_date", 0)

    ce que cela devrait préciser est que car.get ("certificats") [0] ["exp_date"] est le plus proche de ce que vous avez écrit mais n'a pas de sens, car Dans le cas où il n'y a pas de certificat car.get ("certificat") renvoie Aucun , puis vous obtenez une erreur lors de l'évaluation Aucun [0] . Donc, avec l'option numéro 1, vous obtenez également une erreur dans ce cas, mais avec un message d'erreur qui est réellement significatif.


1 commentaires

Réponse exceptionnelle! Merci. Passe une bonne journée!