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 :

Recherche de clés dans un DICT


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut Recherche de clés dans un DICT
    Bonjour,

    A des fins de test, le code suivant recherche une chaine de caractères 'gnom' dans un DICT transformé en str :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        text = str(info_ann)
        regexp = re.compile(r'gnom')
        if regexp.search(text):
            print('matched')
    Maintenant que je sais que la chaine de caractère existe, j'aimerai trouver toutes les clés du DICT qui commencent par cette chaine de caractère comme :
    gnom_AD
    gnom_AA_AD
    ...etc...
    Comment peut-on faire cette recherche dans le DICT ?

    Merci d'avance.

    A+

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 745
    Par défaut
    Salut,

    Citation Envoyé par Mister Nono Voir le message
    Comment peut-on faire cette recherche dans le DICT ?
    En balayant les clefs du dict pour filtrer celles qui vérifient le critère attendu.

    Citation Envoyé par Mister Nono Voir le message
    j'aimerai trouver toutes les clés du DICT qui commencent par cette chaine de caractère comme gnom_AD....
    Vos clefs étant à priori segmentées (avec des '_' entre chaque segment), il aurait peut être été judicieux de fabriquer un dictionnaire de dictionnaires (une hiérarchie) respectant ces segments. Ça permet d'accéder d'un seul coup à ce qui commence par "gnom".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Hello,

    Voici ma solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    patterns = ["exac", "gnomAD", "1kg", "esp"]
        pops = []
        for key in info_ann:
            for p in patterns:
                regexp = re.compile(p)
                if regexp.search(key):
                    pops.append(key)
    A+

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 745
    Par défaut
    Salut,

    Certes çà doit fonctionner mais chercher plusieurs mots dans une regexp se fait avec l'opérateur | (un "ou"). Ce qui pourrait donner un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        patterns = ["exac", "gnomAD", "1kg", "esp"]
        rg = re.compile('|'.join(patterns))
        pops = []
        for key in info_ann:
                if rg.search(key):
                    pops.append(key)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Merci bien pour cette version de code. +1

    A+

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

Discussions similaires

  1. Recherche de mots clés dans mails
    Par AAWOOPY56 dans le forum Lotus Notes
    Réponses: 1
    Dernier message: 13/12/2011, 08h55
  2. Réponses: 33
    Dernier message: 22/08/2011, 14h33
  3. Rechercher plusieurs mots clés dans un range
    Par omarter dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/11/2008, 13h21
  4. Réponses: 6
    Dernier message: 08/11/2008, 15h37
  5. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 13h53

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