我有一个键列表和一个值列表列表。 我需要做的是将这两个列表转换为带有字典的单个列表。
我有一个钥匙清单:
keys = ['id','firstname','lastname']
我的值列表如下:
values = [[23,'abc','gef'],[24,'aabb','ppqq']]
预期输出为:
data = [{'id':23,'firstname':'abc','lastname':'gef'}, {'id':24,'firstname':'aabb','lastname':'ppqq'}]
我将使用大型列表作为“值”列表。有没有有效的“ pythonic”方法来做到这一点?
答案 0 :(得分:1)
尝试简单的列表理解:
>>> keys = ['id','firstname','lastname']
>>> values = [[23,'abc','gef'],[24,'aabb','ppqq']]
>>> [dict(zip(keys, value)) for value in values]
[{'id': 23, 'firstname': 'abc', 'lastname': 'gef'}, {'id': 24, 'firstname': 'aabb', 'lastname': 'ppqq'}]
答案 1 :(得分:0)
使用列表理解。 zip()用于映射多个容器的相似索引,以便可以将它们用作单个实体使用。
keys = ['id','firstname','lastname']
value = [[23, 'abc', 'gef'], [24, 'aabb', 'ppqq']]
data = [{k:v for k,v in zip(keys,v)} for v in value ]
print(data)
O / P:
[{'id': 23, 'firstname': 'abc', 'lastname': 'gef'}, {'id': 24, 'firstname': 'aabb', 'lastname': 'ppqq'}]
答案 2 :(得分:0)
单线形式为data = [{k:v for k, v in zip(keys, v)} for v in values]
,它将列表列表和字典组成的组合
>>> keys =['id','name1','name2']
>>> values = [[23, 'a','g'],[24,'ab','cc']]
>>> data = [{k:v for k, v in zip(keys, v)} for v in values]
>>> data
[{'id': 23, 'name1': 'a', 'name2': 'g'}, {'id': 24, 'name1': 'ab', 'name2': 'cc'}]