首页 > 解决方案 > 如何将列表列表转换为python中的对象列表?

问题描述

我正在使用python 3.7。我有一个数组数组:

[[1,2,3,4],[5,6,7,8],[9,10,11,12]]

我怎样才能使它成为一个对象数组?

[
{
name:1,
surname:2,
price:3,
location:4
},
{
name:5,
surname:6,
price:7,
location:8
},
{
name:9,
surname:10,
price:11,
location:12
}
]

我试着用

array=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
json_str = json.dumps(array)

但它不起作用。

标签: pythonpython-3.x

解决方案


如果我们阅读以下文档json.dumps

使用此转换表将 obj 序列化为 JSON 格式的 str。

这不是我们想要的。我们希望将您的列表列表转换为字典列表,其中的键['name', 'surname', 'price', 'location']与每个子列表一起压缩。

一个简单的解决方案是zip()列表理解中使用:

lst =  [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 

keys = ['name', 'surname', 'price', 'location']

print([dict(zip(keys, sublst)) for sublst in lst])

输出:

[{'name': 1, 'surname': 2, 'price': 3, 'location': 4}, {'name': 5, 'surname': 6, 'price': 7, 'location': 8}, {'name': 9, 'surname': 10, 'price': 11, 'location': 12}]

注意:这假设压缩列表的长度相同。否则我们可以使用itertools.zip_longest压缩不均匀长度的列表。


推荐阅读