140 votes

Comment créer un dictionnaire avec les clés d'une liste et les valeurs par défaut de (disons) zéro?

J'ai a = [1,2,3,4] et je veux d = {1:0, 2:0, 3:0, 4:0}

 d = dict(zip(q,[0 for x in range(0,len(q))]))
 

fonctionne mais est moche. Qu'est-ce qu'un moyen plus propre?

206voto

Tim McNamara Points 6478

dict((el,0) for el in a)

159voto

eumiro Points 56644
 d = dict.fromkeys(a, 0)
 

a est la liste, 0 est la valeur par défaut. Faites attention à ne pas définir la valeur par défaut sur un objet mutable (liste ou dict), car ce sera un objet utilisé comme valeur pour chaque clé du dictionnaire. Les chiffres et les chaînes sont en sécurité.

8voto

intuited Points 7763

En plus de la réponse de Tim, qui convient parfaitement à votre exemple spécifique, il convient de mentionner collections.defaultdict , qui vous permet de faire des choses comme celle-ci:

 >>> d = defaultdict(int)
>>> d[0] += 1
>>> d
{0: 1}
>>> d[4] += 1
>>> d
{0: 1, 4: 1}
 

Pour mapper [1, 2, 3, 4] comme dans votre exemple, c'est un poisson hors de l'eau. Mais selon la raison pour laquelle vous avez posé la question, cela pourrait être une technique plus appropriée.

3voto

GWW Points 20316
 d = dict([(x,0) for x in a])
 

** modifier La solution de Tim est préférable car elle utilise des générateurs voir le commentaire à sa réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X