Convert list of lists to list of dictionaries

被刻印的时光 ゝ 提交于 2020-12-26 07:53:06

问题


I want to convert a list of lists to a list of dictionaries. I have a way to do it but I suspect there's a better way:

t = [[1,2,3], [4,5,6]]
keys = ['a', 'b', 'c']
[{keys[0]:l[0], keys[1]:l[1], keys[2]:l[2]} for l in t]

with output

[{'a': 1, 'c': 3, 'b': 2}, {'a': 4, 'c': 6, 'b': 5}]

This could be done with a loop, but I bet there's a function to do it even easier. From this answer I'm guessing there's a way to do it with the map command, but I'm not quite sure how.


回答1:


You can use list comprehension with the dict() constructor and zip:

[dict(zip(keys, l)) for l in t ]

Demo

>>> d = [dict(zip(keys, l)) for l in t ]
>>>
>>> d
[{'a': 1, 'c': 3, 'b': 2}, {'a': 4, 'c': 6, 'b': 5}]
>>> 



回答2:


It can also be solved with a dictionary comprehension, this way:

>>> [{k:v for k,v in zip(keys, l)} for l in t]
[{'c': 3, 'b': 2, 'a': 1}, {'c': 6, 'b': 5, 'a': 4}]


来源:https://stackoverflow.com/questions/35763593/convert-list-of-lists-to-list-of-dictionaries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!