你走在正确的轨道上zip
,但要注意:
返回的列表的长度被截断为最短参数序列的长度。 http://docs.python.org/2/library/functions.html#zip
如果您对此感到满意,您可以将数据压缩到元组列表中,压缩密钥,然后将所有内容交给dict()
.
如果您想处理缺失值,请结账itertools
izip_longest(Python 2) http://docs.python.org/2/library/itertools.html#itertools.izip_longest or zip_longest(Python 3) http://docs.python.org/3/library/itertools.html#itertools.zip_longest where
如果可迭代的长度不均匀,则缺失值将被填充填充值. http://docs.python.org/2/library/itertools.html#itertools.izip_longest
try:
# Python 2
from itertools import izip_longest
zip_longest = izip_longest
except ImportError:
# Python 3
from itertools import zip_longest
from pprint import pprint
def main():
maker =['Horsey', 'Ford', 'Overland', 'Scripps-Booth', 'FutureX', 'FutureY']
year = ['1899', '1909', '1911', '1913', '20xx']
model = ['Horseless', 'Model T', 'OctoAuto', 'Bi-Autogo']
car_data = dict(zip(maker, zip(year, model)))
car_data_longest = {mk: (yr, md) for mk, yr, md in zip_longest(maker, year, model)}
pprint(car_data)
pprint(car_data_longest)
Output:
{'Ford': ('1909', 'Model T'),
'Horsey': ('1899', 'Horseless'),
'Overland': ('1911', 'OctoAuto'),
'Scripps-Booth': ('1913', 'Bi-Autogo')}
{'Ford': ('1909', 'Model T'),
'FutureX': ('20xx', None),
'FutureY': (None, None),
'Horsey': ('1899', 'Horseless'),
'Overland': ('1911', 'OctoAuto'),
'Scripps-Booth': ('1913', 'Bi-Autogo')}