web-dev-qa-db-fra.com

Créer un dictionnaire à partir de la liste avec python

J'ai besoin de transformer une liste en dictionnaire comme suit. Les éléments impairs ont la clé, et les éléments de nombre pair ont la valeur.

x = (1,'a',2,'b',3,'c') -> {1: 'a', 2: 'b', 3: 'c'}

def set(self, val_): 
    i = 0 
    for val in val_: 
        if i == 0: 
            i = 1 
            key = val 
        else: 
            i = 0 
            self.dict[key] = val 

Une meilleure façon d'obtenir les mêmes résultats?

AJOUTÉE

i = iter(k)
print dict(Zip(i,i))

semble fonctionner

26
prosseek
dict(x[i:i+2] for i in range(0, len(x), 2))
35
Alex Martelli

Voici quelques façons de Python utiliser les compréhensions dict

>>> x = (1,'a',2,'b',3,'c')
>>> {k:v for k,v in Zip(*[iter(x)]*2)}
{1: 'a', 2: 'b', 3: 'c'}
>>> {x[i]:x[i+1] for i in range(0,len(x),2)}
{1: 'a', 2: 'b', 3: 'c'}
11
John La Rooy
>>> x=(1,'a',2,'b',3,'c')
>>> dict(Zip(x[::2],x[1::2]))
{1: 'a', 2: 'b', 3: 'c'}
10
Mark Tolonen
dict(Zip(*[iter(val_)] * 2))
10
x = (1,'a',2,'b',3,'c') 
d = dict(x[n:n+2] for n in xrange(0, len(x), 2))
print d
3
nosklo