2013-02-11 3 views
0

J'ai 2 liste. On regarde commeCombiner deux listes inégales en python

['jim', 'bob', 'mike', 'kim', 'Alex'] 

et les autres regards comme

['YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'YES', 'NO', 'YES', 'NO'] 

Chaque nom dans la liste 1 correspond aux 6 premiers éléments dans la liste 2. Alors jim = « OUI », « OUI », « OUI ',' OUI ',' OUI ',' OUI 'et Alex = NON, NON, OUI, NON, OUI, NON. Existe-t-il un moyen de fusionner ces 2 listes en dict?

j'allais écrire une fonction comme

def people(): 
    List1[0]=List2[0:6] 

mais qui mute alors Liste1. J'ai essayé

dict(List1[0]: List2[0:6]) 

mais obtiens une erreur

Répondre

8

Vous pouvez utiliser une compréhension dict:

{x: l2[6*i:6*(i+1)] for i,x in enumerate(l1)}

Si vous voulez l'horrible version itertools, que quelqu'un lié à poster, tôt ou tard , il va ressembler à quelque chose comme dict(zip(l1, itertools.izip_longest(*[iter(l2)]*6))) ... blergh.

+0

Merci ... Cela fonctionne parfaitement – Joe

+0

la compréhension de dict est le chemin à parcourir. –

0

Essayez plutôt d = {List1[0] : List2[0:6]}. Vous essayez d'appeler le constructeur dict avec la syntaxe :, mais vous devez utiliser {} pour ce faire.