我正在尝试使用带有key:数组对的Python字典作为构建数据库表的基础。字典的结构如下:
schema = {'names': ['Field1', 'Field2', 'Field3'], 'type': ['STRING', 'STRING', 'INTEGER']}
由于缺乏更好的措辞,我试图生成的结果JSON数据结构将是一系列JSON元素,如下所示:
[
{
'names': 'Field1',
'type': 'STRING'
},
{
'names': 'Field2',
'type': 'STRING'
},
{
'names': 'Field3',
'type': 'INTEGER'
}
]
我使用了json模块,并尝试如下进行操作:
import json
schema = {'names': ['Field1', 'Field2', 'Field3'], 'type': ['STRING', 'STRING', 'INTEGER']}
json.dumps(schema)
但是,它给了我
'{"names": ["Field1", "Field2", "Field3"], "type": ["STRING", "STRING", "INTEGER"]}'
我可以通过使用{}.format(..)
构造字符串来做到这一点,但是我想看看是否有更有效的方法。我已经搜索了许多线程,但是大多数线程似乎都与我试图做的相反。
有指针吗?
干杯。
答案 0 :(得分:1)
您可以将names
和types
数组压缩在一起,并将其传递给列表理解器以制作字典和数组。然后转储到JSON:
import json
schema = {'names': ['Field1', 'Field2', 'Field3'], 'type': ['STRING', 'STRING', 'INTEGER']}
# assuming values is just those two lists otherwise spell out explicitly:
l = [{"names":name, "type":field} for name, field in zip(*schema.values())]
json.dumps(l)
结果:
'[{"names": "Field1", "type": "STRING"}, {"names": "Field2", "type": "STRING"}, {"names": "Field3", "type": "INTEGER"}]'
答案 1 :(得分:0)
使用#include <stdlib.h>
获取名称/类型对并建立小词典列表:
zip()
答案 2 :(得分:0)
通过直接在for循环中访问字典,您可以匹配names
和type
的每个元素:
schema = {'names': ['Field1', 'Field2', 'Field3'], 'type': ['STRING', 'STRING',
'INTEGER']}
output = []
names = schema["names"]
type = schema["type"]
for i in range(len(schema["names"])):
output.append({"names": names[i], "type": type[i]})
print(output)
输出:
[{'names': 'Field1', 'type': 'STRING'}, {'names': 'Field2', 'type': 'STRING'}, {'names': 'Field3', 'type': 'INTEGER'}]