convertir les entrées du dictionnaire en variables - python
Est-il un pythonic pour affecter les valeurs d'un dictionnaire à ses clés, dans le but de convertir les entrées du dictionnaire, dans des variables?
J'ai essayé ceci:
>>> d = {'a':1, 'b':2}
>>> for key,val in d.items():
exec('exec(key)=val')
exec(key)=val
^
SyntaxError: invalid syntax
Mise à JOUR: peut-être que j'aurais dû être plus précis: je suis certain que les paires clé-valeur, sont corrects parce qu'ils étaient auparavant définis comme des variables par moi avant. J'ai ensuite stockées ces variables dans un dictionnaire (comme paires clé-valeur) et souhaitez les réutiliser dans une autre fonction. J'ai juste pu les définir à nouveau dans la nouvelle fonction, mais parce que j'ai peut-être un dictionnaire avec environ 20 entrées, je pensais qu'il peut être un moyen plus efficace de le faire.
source d'informationauteur HappyPy | 2013-08-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en une seule ligne avec:
J'ai vu cette solution dans un autre thread. Bien que vous devez être prudent avec la façon Python peut optimiser les variables locales/globales d'accès lors de l'utilisation de cette astuce.
Note
Je pense que l'édition
locals()
comme c'est généralement une mauvaise idée. Si vous pensez queglobals()
est une meilleure alternative, réfléchissez-y à deux fois! 😀Je préfère toujours utiliser un espace de noms:
C'était ce que je cherchais:
Vous avez déjà un parfaitement bon dictionnaire. L'utiliser. Si vous savez ce que les touches sont va être, et vous êtes absolument sûr que c'est une idée raisonnable, vous pouvez faire quelque chose comme
mais la plupart du temps, vous devriez utiliser le dictionnaire. (Si vous utilisez le dictionnaire est maladroit, vous n'êtes probablement pas l'organisation de vos données; demander de l'aide à réorganiser.)
En compte le "Tas" solution en Python: charger des variables dans un dict en l'espace de noms. Vos variables dans le cadre d'un nouvel objet, les gens du coin, mais vous pouvez les traiter comme des variables au lieu de dict entrées.
Utiliser les pandas: