Convert [key1,val1,key2,val2] to a dict?
dictionary, list, python
Solution
b = dict(zip(a[::2], a[1::2]))
If `a` is large, you will probably want to do something like the following, which doesn't make any temporary lists like the above.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
In Python 3 you could also use a dict comprehension, but ironically I think the simplest way to do it will be with `range()` and `len()`, which would normally be a code smell.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
So the `iter()/izip()` method is still probably the most Pythonic in Python 3, although as EOL notes in a comment, `zip()` is already lazy in Python 3 so you don't need `izip()`.
i = iter(a)
b = dict(zip(i, i))
In Python 3.8 and later you can write this on one line using the "walrus" operator (`:=`):
b = dict(zip(i := iter(a), i))
Otherwise you'd need to use a semicolon to get it on one line.
Problem
Let's say I have a list `a` in Python whose entries conveniently map to a dictionary. Each even element represents the key to the dictionary, and the following odd element is the value for example, ``` a = ['hello','world','1','2'] ``` and I'd like to convert it to a dictionary `b`, where ``` b['hello'] = 'world' b['1'] = '2' ``` What is the syntactically cleanest way to accomplish this?