Python 将多个列表数据转换为dict

Python 将多个列表数据转换为dict,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,如果我有一个列表,如: my_list = [['key1', 'key2'], [1,2], ['a','b']] 我想把它做成一个dict,其中第一个列表的第一个元素是映射到其他dict的相应索引元素的键,如: my_dict = {'key1': [1, 'a'], 'key2': [2, 'b']} 有没有一种有效的方法 这应该可以: my_dict = {r[0]: list(r[1:]) for r in zip(*my_list)} zip是您希望在此处从子列表中获取相应项目

如果我有一个列表,如:

my_list = [['key1', 'key2'], [1,2], ['a','b']]
我想把它做成一个dict,其中第一个列表的第一个元素是映射到其他dict的相应索引元素的键,如:

my_dict = {'key1': [1, 'a'], 'key2': [2, 'b']}
有没有一种有效的方法

这应该可以:

my_dict = {r[0]: list(r[1:]) for r in zip(*my_list)}

zip
是您希望在此处从子列表中获取相应项目的内容。然后你可以用听写理解来建立字典

my_dict = {rec[0]: list(rec[1:]) for rec in zip(*my_list)}
# {'key1': [1, 'a'], 'key2': [2, 'b']}

如果您同意dict值是元组,那么可以省略
list()
调用。

zip splat是纯python的“转置”。然后在听写理解中进行另一次splat:

>>> {k: v for k, *v in zip(*my_list)}
{'key1': [1, 'a'], 'key2': [2, 'b']}

您是否总是拥有与后续列表相同的键数?