2009-11-24 5 views
2

Possible en double:
Map two lists into a dictionary in PythonFaire Dictionnaire De 2 Liste

essayant de faire le dictionnaire avec 2 liste étant la clé et l'une étant la valeur mais je vais avoir un problème. Voilà ce que j'ai jusqu'à présent:

d={} 
for num in range(10): 
    for nbr in range(len(key)): 
     d[num]=key[nbr] 

dire que ma clé est une liste de 1 à 9 et liste de valeurs est [2,4,0,9,6,6,8,6,4,5] comment je n'assignent donc ce que son comme {0:2, 1:4, etc...}

+0

Si « ma clé est une liste de 1 à 9 » inclus, mais votre liste de valeurs a dix entrées, puis comme on dit à Shanghai, vous êtes jusqu'à Suzhou Creek dans un bateau à vapeur en bambou avec une baguette cassée pour une pagayer. –

Répondre

0

devrait être quelque chose comme

dict(zip(a,b)) 
12

zip() à la rescousse!

>>> k = range(1,10) # or some list or iterable of sorts 
>>> v = [2,4,0,9,6,6,8,6,4,5] 
>>> d = dict(zip(k,v)) 
>>> d 
{1: 2, 2: 4, 3: 0, 4: 9, 5: 6, 6: 6, 7: 8, 8: 6, 9: 4} 
>>> 

Pour plus de détails, voir zip() built-in function, dans la documentation Python.

Notez, en ce qui concerne range() et la liste des "clés".
La question lit "clé est une liste de 1 à 9" (c'est-à-dire 9 clés distinctes), mais la liste de valeurs montre 10 valeurs distinctes. Cela donne l'occasion de discuter de deux points de « détail »:

  • la gamme() dans l'extrait produira au-dessus du 1 à 9 plage, qui est parce que la valeur de départ (1, ici), si elles sont fournies , est toujours inclus, alors que la valeur de fin (10, ici) n'est jamais incluse.
  • la fonction zip() arrête après l'itération qui comprend le dernier élément de la plus courte iterable (dans notre cas, en omettant « 5 », la dernière valeur de la liste)
2
values = [2,4,0,9,6,6,8,6,4,5] 
d = dict(zip(range(10), values)) 
1
mydict = dict(zip(range(10), [2,4,0,9,6,6,8,6,4,5])) 
6

Si vous mappez des index spécifiquement, utilisez la fonction intégrée enumerate au lieu de zip/plage.

dict(enumerate([2,4,0,9,6,6,8,6,4,5])) 
+2

Difficile de voir pourquoi vous auriez besoin de créer un dict qui utilise une plage pour une clé, sauf si vous la passez à quelque chose qui ne peut pas utiliser une liste. –

Questions connexes