将列表转换为json格式(第一个列表是标题)

2024-10-03 02:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

这是列表的示例列表

[
   [hour,name,year,age],
   [12,'pravin',1997,23],
   [12,'navin',1995,25],
   [12,'prashant',1989,30]
]

如何使用python将其转换为下面的json。我基本上希望我的第一个列表元素作为其他列表元素的键。基本上:

{
  results:[{
      hour : 12,
      name  : 'pravin',
      year : 1995,
      age   : 30   

      },{
      hour : 12,
      name  : 'navin',
      year : 1995,
      age   : 25   

      },{
      hour : 12,
      name  : 'prashant',
      year : 1989,
      age   : 30   

      }
      ]

}

Tags: namejson元素示例列表ageyearresults
2条回答

您可以将它们转换为pandasDataFrame对象,然后将其转换为json

import pandas as pd
df = pd.DataFrame(data=results[1:], columns=results[0])
json_results = df.to_json()

第二行是从列表列表创建dataframe对象。请注意,我跳过了第一个列表(即列标题),仅将其用于列名称。 第三行创建一个json对象。您可以使用解析和转储来保存它

我建议您查看关于to_json()的pandas文档中的示例

没有pandas的另一个解决方案:

from pprint import pprint


data = [
   ['hour','name','year','age'],
   [12,'pravin',1997,23],
   [12,'navin',1995,25],
   [12,'prashant',1989,30]
]

out = {'results':[dict(zip(data[0], row)) for row in data[1:]]}

pprint(out)

印刷品:

{'results': [{'age': 23, 'hour': 12, 'name': 'pravin', 'year': 1997},
             {'age': 25, 'hour': 12, 'name': 'navin', 'year': 1995},
             {'age': 30, 'hour': 12, 'name': 'prashant', 'year': 1989}]}

相关问题 更多 >