IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Aller chercher l'intégralité d'un dictionnaire en fonction d'une valeur trouvé dans sa liste parent [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Aller chercher l'intégralité d'un dictionnaire en fonction d'une valeur trouvé dans sa liste parent
    Bonjour à tous,

    j'utilise un fichier .JSON où sont stockés différents données :
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    {
      "status": 0,
      "offset": 0,
      "total": 64095,
      "data": [
        {
          "orderNumber": "653427009",
          "estimatedDate": "2020-06-28",
          "expectedQuantity": "1.00",
          "isExpress": false,
          "identity2": null,
          "removeBy": null,
          "dateTimeMeeting": "2020-07-02T15:40Z",
          "identity1": null,
          "customerEmail": "*****@gmail.com",
          "id": 66002,
          "trackingNumber": "6534270090101",
          "selected": false,
          "height": "12.00",
          "updatedBy": {
            "code": "middleware",
            "name": "Middleware",
            "id": 4,
            "$version": 2
          },
          "deliveredDatetime": null,
          "agrikolisOtp": "10200744",
          "receiptDate": "2020-06-29T06:39:11.670Z",
          "weight": "26.71",
          "incomingQuantity": "1.00",
          "updatedOn": "2020-06-29T07:35:01.465Z",
          "version": 11,
          "customerName": "**** ****",
          "attrs": null,
          "volume": "111000.00",
    Je fais une lecture de JSON avec par exemple: si l'utilisateur rentre une adresse mail valide, alors on continue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    with open('data.json', "w") as f:
        json.dump(file, f)
     
    data_file = open('data.json', 'rb').read()
    data = json.loads(data_file)
    email_list = dict()
     
    a = data['data']
     
     
    for item in a:
        email = item['customerEmail']
        email_list[email] = item['customerEmail']
     
    key_list = [k for (k, val) in email_list.items()]
    email_user = "****@gmail.com"
     
    if email_user in key_list: 
        #afficher toutes les données d'un dictionnaire qui a la valeur email
    Comme vous pouvez le voir, mon "a" est une liste contenant plusieurs dictionnaire que je peux appeler comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dict_list = a[1] #pour le deuxième dictionnaire, par exemple
    Ce que je souhaiterais faire c'est afficher l'intégralité d'un dictionnaire qui contiendrais la valeur "customerEmail" rentré par l'utilisateur, et donc afficher "orderNumber" etc.

    En faites le "customerEmail" est en quelque sorte une authentification pour pouvoir accéder aux autres données!

    J'espère avoir été clair..

    Bonne journée à vous tous.

    ps: les "*" sont justes là pour masquer certaines données privées.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par rudydef Voir le message
    J'espère avoir été clair.
    Pas vraiment non

    Citation Envoyé par rudydef Voir le message
    Ce que je souhaiterais faire c'est afficher l'intégralité d'un dictionnaire qui contiendrais la valeur "customerEmail" rentré par l'utilisateur, et donc afficher "orderNumber" etc.
    Ben si "customerEmail" est dans la clef, alors if "customerEmail" in dico.keys(): print(dico). Et si c'est dans les valeurs alors if "customerEmail" in dico.values(): print(dico). Et quand c'est une recherche sur les clefs alors tu peux omettre "keys()" qui est par défaut => if "customerEmail" in dico: print(dico).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c = {'e':5,'f':4}
    d = {'e':9,'f':6}
    liste = [c,d]
    dico  = [x for x in liste if x['e'] == 5][0]
    J'ai bon ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c = {'e':5,'f':4}
    d = {'e':9,'f':6}
    liste = [c,d]
    dico  = [x for x in liste if x['e'] == 5][0]
    J'ai bon ?
    Salut,

    tu as bon je te remercie!

    Pour ma solution, voilà ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    data_file = open('data.json', 'rb').read()
    data = json.loads(data_file)
     
    a = data['data']
     
    email_user = "****@gmail.com"
    b = [x for x in a if x['customerEmail'] == email_user]
    print(b)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Juste une petite précision :
    Citation Envoyé par rudydef Voir le message
    email_user = "****@gmail.com"
    b = [x for x in a if x['customerEmail'] == email_user]
    print(b)
    [/CODE]
    Attention là b est une liste

    Et là b est un dictionnaire :
    b = [x for x in a if x['customerEmail'] == email_user][0]Mais c'est peut-être voulu de ta part.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rudydef Voir le message
    tu as bon je te remercie!
    Ouais de rien
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouais de rien
    Bonjour,

    désolé je n'avais pas fais attention à ta réponse... J'ai essayé ta solution mais comme visiblement je n'avais pas été trés clair et c'est normal, j'ai essayé ta solution et cela n'était pas réellement ce que je souhaitais faire!

    Je te remercie quand même pour ta réponse!

    Bonne journée.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Juste une petite précision :

    Attention là b est une liste

    Et là b est un dictionnaire :
    b = [x for x in a if x['customerEmail'] == email_user][0]Mais c'est peut-être voulu de ta part.
    Mon but était de stocker ensuite b dans un nouveau fichier .JSON pour ensuite aller chercher des infos dans ce fichier. Cependant, je pense qu'il est plus préférable dans mon cas de manipuler une list qu'un dictionnaire, mais en tout cas merci de l'info!

    Bonne journée à toi!

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouais de rien
    Oh le jaloux !
    Bon ça sera la seule fois de l'année où j'aurai réussi à mieux répondre que toi...

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Oh le jaloux !
    Bah c'est vrai quoi. Il te remercie parce que t'as trouvé "par chance" et pas moi qui ai tenté de l'aider. Mais bon il s'est rattrappé ensuite alors ça va.
    Citation Envoyé par LeNarvalo Voir le message
    Bon ça sera la seule fois de l'année où j'aurai réussi à mieux répondre que toi...
    Bah, l'important c'est surtout de participer. L'échec aussi permet d'avancer
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2018, 11h28
  2. Réponses: 2
    Dernier message: 13/05/2016, 23h26
  3. Chercher une valeur particuliére dans une ligne
    Par AI_LINUX dans le forum Excel
    Réponses: 3
    Dernier message: 18/05/2015, 19h08
  4. Réponses: 15
    Dernier message: 14/08/2009, 15h45
  5. Réponses: 1
    Dernier message: 11/05/2006, 01h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo