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

Calcul scientifique Python Discussion :

Conversion d'un dictionnaire en variables


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Par défaut Conversion d'un dictionnaire en variables
    Bonjour,

    Je suis nouveau sur ce forum. Je cherche en effet à convertir clés d'un dictionnaire (de type string) en des noms de variables auxquels seront affectés les valeurs de ces clés (qui sont de type float), et mettre tout ça dans une fonction qui retourne ces variables.

    mon dico à la forme : Dico={'a':1.2,'b':1.5}

    Voici la fonction que j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def convert_dict_to_var (Dico):
     
        for converted_key,v in Dico.iteritems():
    #        exec("global %s" %converted_key)
            exec("%s=v" %converted_key)
    #        if converted_key=='b' : print b
    les variables sont crées (le test if) mais je n'arrive pas à les faire visible dans le programme principal.

    Quelqu'un pourrait-il m'aider ?
    Merci

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def convert_dict_to_var(Dico):
        for converted_key, v in Dico.iteritems():
            exec("%s=v" %converted_key, locals(), globals()) # < Ici
            if converted_key == 'b':
                print b 
     
    Dico={'a':1.2, 'b':1.5}
    convert_dict_to_var(Dico)
    print b
    @+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Par défaut
    Bonjour,

    Merci Beaucoup, ça marche parfaitement, ça fait des heures que je cherche la solution !!
    Merci encore

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    Un petit 'warning' toutefois.

    Bon code

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Comme globals, contrairement à locals, n'est pas en lecture seule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def convert_dict_to_var(Dico):
        for converted_key, v in Dico.iteritems():
            globals()[converted_key] = v
            if converted_key == 'b':
                print b 
     
    Dico={'a':1.2, 'b':1.5}
    convert_dict_to_var(Dico)
    print b
    @+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Par défaut
    Bonsoir,

    Auriez-vous une idée comment faire pour retourner ces variables (à priori non connus) avec l'instruction return au lieu de les définir comme variables globales dans le module où la fonction convert_dict_to_var est définie. en d'autre terme je cherche à appeler cette fonction à partir d'un autre module.

    Merci pour votre aide

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut ?hu?
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dico= dict(a=1.2, b=1.5)
    globals().update(Dico)
    mais je n'ai peut être pas tout compris

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

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par dje_bibou Voir le message
    Bonsoir,

    Auriez-vous une idée comment faire pour retourner ces variables (à priori non connus) avec l'instruction return au lieu de les définir comme variables globales dans le module où la fonction convert_dict_to_var est définie. en d'autre terme je cherche à appeler cette fonction à partir d'un autre module.

    Merci pour votre aide
    Ben... Dans ce cas vous avez des variables (Dico) dans l'autre module et non dans celui ci, non ?

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

Discussions similaires

  1. Aide pour la fonction recherche et dictionnaire de variable
    Par Esmax dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/09/2010, 21h47
  2. Conversion d'un dictionnaire Python en Tcl
    Par t_om84 dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 23/09/2009, 18h30
  3. conversion de type et de variable
    Par dirty_harry dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 04/06/2009, 12h11
  4. Conversion contenu objet File en variable String
    Par theleek dans le forum JSF
    Réponses: 2
    Dernier message: 20/12/2007, 11h31
  5. conversion d'un string en variable
    Par a_centaure dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2007, 12h38

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