Application d'une fonction à valeurs dans dict
Je veux appliquer une fonction à toutes les valeurs de dict et la stocker dans un distinct dict. Je suis juste en train de voir comment je peux jouer avec python et vous voulez voir comment je peux réécrire quelque chose comme cela
for i in d:
d2[i] = f(d[i])
à quelque chose comme
d2[i] = f(d[i]) for i in d
La première façon d'écrire c'est parfait, mais j'essaie de comprendre comment la syntaxe de python peut être changé
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aide de Python 2.7 ou 3.x:
Qui est équivalent à:
Autrement:
d2
au lieu de modifier un en place. Mais c'est presque toujours ce que vous voulez vraiment faire. Si vous avez vraiment besoin de mettre à jourd2
en place, vous pouvez toujours faired2.update({k: f(v) for k, v in d1.items()})
.Dictionnaires peuvent être imbriquées en Python et dans ce cas la solution
d2 = {k: f(v) for k, v in d1.items()}
ne fonctionnera pas.Pour les dictionnaires imbriqués l'un a besoin de quelque fonction transversale de l'ensemble de la structure de données. Par exemple, si les valeurs sont autorisés à être eux-mêmes dictionnaires, on peut définir une fonction comme:
Et puis
Si vous n'avez pas l'esprit à l'aide d'une extension. Vous pouvez également utiliser toolz très propre
valmap
:from toolz.dicttoolz import valmap
Si ce n'est le propre de la présentation de la méthode, vous avez également la possibilité de fournir un retour par défaut de la classe ainsi donc pour les personnes qui ont besoin d'autre chose que d'une
dict
.