Make dictionary from list with python [duplicate]

I need to transform a list into dictionary as follows. The odd elements has the key, and even number elements has the value.

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 

A better way to get the same results?

ADDED

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

seems to be working


Solution 1:

dict(x[i:i+2] for i in range(0, len(x), 2))

Solution 2:

Here are a couple of ways for Python3 using dict comprehensions

>>> 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'}

Solution 3:

dict(zip(*[iter(val_)] * 2))