Python 将两个二维列表转换为词典列表
我正在尝试将以下两个2D列表转换为字典列表,如: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'
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可以非常简洁。