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 :

Création de dictionnaires depuis une liste de strings


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Création de dictionnaires depuis une liste de strings
    Bonjour,

    Je sèche un peu et j'espère qu'un collègue pythonneur sera en capacité de m'aider un peu.

    Je souhaite créer une pluralité de dictionnaires qui porteront pour chacun un nom tiré d'une liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lst =['dico_discipline', 'dico_similaire' , 'dico_base' ]
    dico_discipline =dict()
    dico_similaire =dict()
    dico_base =dict()
    J'avais pensé à utiliser une compréhension de liste mais il y a une difficulté quant à muer un string en nom de dictionnaire.
    Quelqu'un aurait une piste ? Merci d'avance.
    Dernière modification par Invité ; 09/08/2021 à 14h29.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Vous pouvez créer un dictionnaire dont les clefs seront les noms tirés de la liste et la valeur associé le dictionnaire correspondant.
    Ce qui peu se faire en compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> lst =['dico_discipline', 'dico_similaire' , 'dico_base' ]
    >>> D = { k:dict() for k in lst }
    >>> D
    {'dico_discipline': {}, 'dico_similaire': {}, 'dico_base': {}}
    >>>
    - W

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci. Mais mon souci c'est que je ne veux pas que le nom du dictionnaire soit un string.
    Je souhaiterais obtenir au final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dico_points_similaire ={}
     
    et non pas
     
    'dico_points_similaire' ={}
    J'ignore si je m'explique correctement mais je pense que mon problème n'est pas d'effectuer une compréhension de liste
    mais de convertir un string en nom de variable.
    Dernière modification par Invité ; 09/08/2021 à 14h50.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par ceststef Voir le message
    J'ignore si je m'explique correctement mais je pense que mon problème n'est pas d'effectuer une compréhension de liste
    mais de convertir un string en nom de variable.
    Ca n'a aucun intérêt sauf de montrer que vous cherchez à résoudre un problème de la plus mauvaise façon qui soit.

    Il serait donc préférable de raconter ce que vous cherchez à faire et d'essayer de comprendre comment on peut le faire avec Python plutôt que de vous acharnez à vouloir le faire ainsi.

    Sinon, les variables sont une association semblable dans le dictionnaire globals(). Quel intérêt de le polluer avec des données?

    - W

  5. #5
    Invité
    Invité(e)
    Par défaut
    Très bien. Alors je vais tacher de me raconter.

    Si je veux créer un dictionnaire, je vais faire ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dico_points_similaire =dict()
    Mes trois dictionnaires cités précédemment sont déjà exploités dans mon programme donc je ne souhaite pas
    modifier le nom de ces variables.

    Mais j'ai décidé de mécaniser la création de mes dictionnaires au début du programme en fonction de certains
    choix et critères.
    Voilà pourquoi j'ai listé le nom de mes dictionnaires sous cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lst =['dico_discipline', 'dico_similaire' , 'dico_base' ]
    car si j'écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [dico_discipline, dico_similaire , dico_base ]
    naturellement PYTHON me retourne aux cours de l'exécution du programme qu'il ne connait pas ces trois variables.

    Voilà pourquoi j'indiquais qu'il me fallait découvrir comment mécaniser la création des dictionnaires pour obtenir cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dico_discipline =dict() ou dico_discipline ={}
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'dico_discipline' =dict() ou 'dico_discipline' ={}
    Cela m'éviterait de devoir tout renommer.

    Je ne cherche pas à introduire de la complexité, je souhaite m'épargner un grand labeur.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par ceststef Voir le message
    Cela m'éviterait de devoir tout renommer.
    Je ne cherche pas à introduire de la complexité, je souhaite m'épargner un grand labeur
    factorisez le code qui utilise des dictionnaires en une ou plusieurs fonctions qui prennent ces noms de variables en argument. Ca ne change pas trop le code existant sinon l'indenter et mettre un def fonction en chapeau.

    Puis vous fabriquez vos dictionnaires avec n'importe quel nom de variables, ce qui comptera, ce sont les arguments passés à la (ou les) fonction(s) appelée(s).

    Effectivement ranger son code dans des fonctions ajoute un peu de complexité mais c'est quand même une construction de base...

    - W

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui, c'est vrai, c'est une bonne solution. Je vais la retenir. Merci beaucoup.

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

Discussions similaires

  1. [VBA-E]Création de boutons selon une liste
    Par frevale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2006, 15h31
  2. Création de fichier depuis une procédure stockée
    Par xavier ringoise dans le forum SQL
    Réponses: 2
    Dernier message: 07/03/2006, 10h45
  3. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 16h39
  4. Réponses: 36
    Dernier message: 28/09/2005, 13h30
  5. Zoom depuis une liste
    Par ranx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 24/08/2005, 12h22

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