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?
dict((el,0) for el in a)
fonctionnera bien.
Python 2.7 et les versions ultérieures prennent également en charge la compréhension de dict. Cette syntaxe est {el:0 for el in a}
.
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 (cochez la case ici pour une solution dans ce cas). ). Les chiffres et les chaînes sont en sécurité.
Dans python version> = 2.7 et dans python 3:
d = {el:0 for el in a}
En plus de la réponse de Tim, qui convient parfaitement à votre exemple spécifique, il convient de mentionner collections.defaultdict
, qui vous permet d'effectuer des tâches comme celles-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, il s’agit d’un poisson hors de l’eau. Mais selon la raison pour laquelle vous avez posé la question, cette technique pourrait s'avérer plus appropriée.
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.