将两个列表映射到python中的字典中


假设你有:

keys = ('name', 'age', 'food')
values = ('Monty', 42, 'spam')

生成下面的字典最简单的方法是什么?

a_dict = {'name' : 'Monty', 'age' : 42, 'food' : 'spam'}

这段代码有用,但我并不为此感到骄傲:

a_dict = {}
junk = map(lambda k, v: a_dict.update({k: v}), keys, values)

像这样:

>>> keys = ['a', 'b', 'c']
>>> values = [1, 2, 3]
>>> dictionary = dict(zip(keys, values))
>>> print(dictionary)
{'a': 1, 'b': 2, 'c': 3}

Voila :-)成对的dict构造函数和zip函数非常有用:https://docs.python.org/3/library/functions.html#func-dict

试试这个:

>>> import itertools
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> adict = dict(itertools.izip(keys,values))
>>> adict
{'food': 'spam', 'age': 42, 'name': 'Monty'}

在Python 2中,与zip相比,它在内存消耗上也更经济。

未经作者同意,本文严禁转载,违者必究!