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 :

Une fonction qui récupère des valeurs spécifiques d'un dictionnaire. [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Août 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2018
    Messages : 26
    Par défaut Une fonction qui récupère des valeurs spécifiques d'un dictionnaire.
    bonjour,
    J'ai un dictionnaire comme celui - ci :
    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
     a = {
    'I' : 'I', 
    'IV' : 'IV',	
    'V' : 'IIIII',
    'VI': 'VI', 
    'X' : 'VV', 
    'XX' : 'XX', 
    'L' : 'XXXXX', 
    'C' : 'LL', 
    'D' : 'CCCCC', 
    'M' : 'DD', 
    'IV' :'IIII', 
    'IX' : 'VIIII', 
    'XL' : 'XXXX', 
    'XC' : 'LXXXX', 
    'CD' : 'CCCC', 
    'CM' : 'DCCCC' }
    Et j'ai une liste comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = ['VV', 'IIIII', 'VV', 'VV', 'IIIII']
    J'aimerai obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = ['X', 'V', 'X', 'X', 'V']
    Voila ce que j'ai fais pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def g(x) :
    	return [k for k,v in a.items() if v in(x)]
    Mais le résultat semble supprimer tous les éléments qui reviennent plusieurs fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> g(res)
    ['V', 'X']

  2. #2
    Membre expérimenté Avatar de zancrows
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 159
    Par défaut
    bonjour

    de manière simple on peut faire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def g(x) :
        l = []
        for n in x:
            for k, v in a.items():
                if n == v:
                    l.append(k)
                    break
            else: # si la boucle a été complètement parcourue sans rien trouver on ajoute None
                l.append(None)
        return l

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    ou encore comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> g=lambda x:[j for i in x for j in a if a[j] == i]
    >>> res
    ['VV', 'IIIII', 'VV', 'VV', 'IIIII']
    >>> g(res)
    ['X', 'V', 'X', 'X', 'V']
    ce que je remarque surtout c'est que tu utilises ton dictionnaire à l'envers, ce serait bien plus pratique d'avoir le même dictionnaire inversé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> assert(len(set(a.keys())) == len(set(a.values())))
    >>> d = dict(zip(a.values(), a.keys()))
    >>> [d[i] for i in res]
    ['X', 'V', 'X', 'X', 'V']

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/03/2019, 13h33
  2. Réponses: 2
    Dernier message: 27/05/2007, 23h05
  3. [VBA][03] Erreur dans une fonction qui vide des tables
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/04/2007, 14h13
  4. [MySQL] Créer une fonction qui récupère un enregistrement
    Par azahord dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/11/2006, 20h13
  5. Réponses: 4
    Dernier message: 28/10/2005, 16h30

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