What is the pythonic way to combine two sequences into a dictionary?

Is there a shorter way to do this in Python ?:

def toDict(keys, values): d = dict() for k,v in zip(keys, values): d[k] = v return d 
+7
python
source share
2 answers

Yes:

 dict(zip(keys,values)) 
+42
source share

If the keys can be larger than values ', then you can use itertools.izip_longest (Python 2.6), which allows you to specify a default value for the rest of the keys:

 from itertools import izip_longest def to_dict(keys, values, default=None): return dict(izip_longest(keys, values, fillvalue=default)) 

Example:

 >>> to_dict("abcdef", range(3), 10) {'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10} 

NOTE: itertools.izip*() functions, unlike the zip() function, return iterators that do not contain lists.

+4
source share

All Articles