我有两个列表如下:
>> a = [u'username', u'first name', u'last name']
>> b = [[u'user1', u'Jack', u'Dawson'], [u'user2', u'Roger', u'Federer']]
我正在尝试获取输出json,如下所示:
[
{
"username":"user1",
"first name":"Jack",
"last name":"Dawson"
},
{
"username":"user2",
"first name":"Roger",
"last name":"Federer"
}
]
我正在尝试使用zip命令,如下所示:
>> x = []
>> for i in range(0, len(b)):
.. x += zip(a,b[i])
..
但是这并没有给我想要的输出。我该如何实现呢?
答案 0 :(得分:8)
zip
将返回一个元组列表。您忘了将此元组列表转换为字典。您可以使用dict
构造函数来完成此操作。您也可以完全避免循环:[dict(zip(a, row)) for row in b]
将创建所需的词典列表。然后在构建列表后,您可以转换为json。例如:
a = [u'username', u'first name', u'last name']
b = [[u'user1', u'Jack', u'Dawson'], [u'user2', u'Roger', u'Federer']]
import json
print(json.dumps([dict(zip(a, row)) for row in b], indent=1))
输出:
[
{
"username": "user1",
"first name": "Jack",
"last name": "Dawson"
},
{
"username": "user2",
"first name": "Roger",
"last name": "Federer"
}
]