如何将键列表和值列表列表转换为单个词典列表?

时间:2019-07-17 06:42:17

标签: python list dictionary

我有一个键列表和一个值列表列表。 我需要做的是将这两个列表转换为带有字典的单个列表。

我有一个钥匙清单:

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”方法来做到这一点?

3 个答案:

答案 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'}]