Python 将两个二维列表转换为词典列表

Python 将两个二维列表转换为词典列表,python,python-3.x,Python,Python 3.x,我正在尝试将以下两个2D列表转换为字典列表,如: list1 = [ ['name', 'age', 'birth'], ['name', 'age', 'birth'] ] list2 = [ ['a', 20, 2000], ['b', 23, 2003] ] 我想要这样的结果: list3 = [ {'name' : 'a', 'age' : 20, 'birth' : 2000 }, {'name'

我正在尝试将以下两个2D列表转换为字典列表,如:

list1 = [ ['name', 'age', 'birth'], ['name', 'age', 'birth'] ]

list2 = [ ['a', 20, 2000], ['b', 23, 2003] ]
我想要这样的结果:

list3 = [ {'name' : 'a',
           'age' : 20,
           'birth' : 2000
          },
          {'name' : 'b',
           'age' : 23,
           'birth' : 2003}]

我尝试使用
zip
进行转换,但无法得到结果。

您可以使用列表之间的索引对应

list1 = [ ["name", "age", "birth"], ["name", "age", "birth"] ]
list2 = [ ["a", 20, 2000], ["b", 23, 2003] ]

list3 = []

for i in range(len(list1)):
    dico = {}
    for j in range(len(list1[i])):
        dico[list1[i][j]] = list2[i][j]
    list3.append(dico)

print(list3)
输出:

[{'name': 'a', 'age': 20, 'birth': 2000}, {'name': 'b', 'age': 23, 'birth': 2003}]

这里需要的是嵌套-
zip
ping。首先
zip
标题列表和数据列表,然后
zip
每个标题及其值:

list3=[]
对于zip中的标题列表、数据列表(列表1、列表2):
d={}
对于页眉,zip中的值(页眉列表、数据列表):
d[标题]=值
清单3.追加(d)
打印(列表3)
其中:

[{'name': 'a', 'age': 20, 'birth': 2000}, {'name': 'b', 'age': 23, 'birth': 2003}]
通过使用以下方法,可以稍微减少这一点:

list3=[]
对于zip中的标题列表、数据列表(列表1、列表2):
list3.append(dict(zip(标题列表、数据列表)))

还可以进一步简化为不太可取、可读性较差的列表理解:

list3 = [dict(zip(header_list, data_list)) for header_list, data_list in zip(list1, list2)]
试试这个-

list1 = [ ['name', 'age', 'birth'], ['name', 'age', 'birth'] ]

list2 = [ ['a', 20, 2000], ['b', 23, 2003] ]

list3 = []

for l1,l2 in zip(list1,list2):
    ###### Dictionary Comphrehension
    list3 += [{ k:v for k,v in zip(l1,l2)}] 

list3

下面是一个单行程序,它使用字典理解和
zip
应用于两个列表的整个zip中的元素:

[{k:v for k,v in zip(*zipped)} for zipped in zip(list1,list2)]
编辑时

根据Tomerikoo的评论,这可以进一步改进为:

[dict(zip(*zipped)) for zipped in zip(list1,list2)]

“我尝试使用zip进行转换,但无法获得结果”-请展示您尝试的内容,以便我们可以帮助您正确地进行转换…您是否可以解释为什么甚至需要
列表1
?它似乎可以是一个简单的列表,因为两个子列表都是相同的结构
{k:v代表k,v在zip(…)}
可以使用dict构造函数进行缩减:
dict(zip(…)
:)@Tomerikoo这是一个很好的观点。我再加上。Python可以非常简洁。