【问题标题】:Python nested dict. return deepest dict to csvPython 嵌套字典。将最深的字典返回到 csv
【发布时间】:2022-06-11 13:41:22
【问题描述】:

由于以下结构,我试图将一些值从嵌套字典(基于 json)返回到 csv,但没有成功。

{
  "http_method":"GET",
  "results":{
    "FTKMOB21xxxxD":{
      "serial_number":"FTKMOB21xxxxD",
      "comments":"",
      "q_type":432,
      "license":"EFTM123123123",
      "type":"mobile",
      "user":"pippo",
      "user_type":"user",
      "drift":0,
      "status":{
        "name":"activated"
      }
    },
    "FTKMOB21xxxxF":{
      "serial_number":"FTKMOB21xxxxF",
      "comments":"",
      "q_type":432,
      "license":"EFTM123123123",
      "type":"mobile",
      "drift":0,
      "status":{
        "name":"pending"
      }
    }
  },
  "vdom":"root",
  "path":"user",
  "name":"fortitoken",
  "action":"",
  "status":"success",
  "serial":"FGT_VM",
  "version":"v7.0.5",
  "build":304
}

我需要在 csv 中返回字段“serial_number”、“user”、“status”。 每个设备的 FTKMOB21xxxxD 都会发生变化,我需要将其视为动态值,我认为需要一个基于其位置的循环。

你能帮我理解怎么做吗?

【问题讨论】:

    标签: python json api dictionary


    【解决方案1】:

    熊猫很简单:

    import pandas as pd
    
    df = pd.DataFrame(input_dict['results'])
    df.T[["serial_number", "user", "status"]].to_csv('output.csv', index=False)
    

    您的 csv 将如下所示:

    serial_number,user,status
    FTKMOB21xxxxD,pippo,{'name': 'activated'}
    FTKMOB21xxxxF,,{'name': 'pending'}
    
    编辑:如果你真的想要状态/名称作为状态,你必须重新分配df['status']
    df = pd.DataFrame.from_dict(input_dict['results'], orient='index', columns=["serial_number", "user", "status"])
    df['status'] = pd.DataFrame(df['status'].to_list())['name'].to_list()
    df.to_csv('output.csv', index=False)
    

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 2022-11-25
      • 2013-11-30
      • 2018-11-30
      • 2021-06-21
      • 2015-06-06
      • 1970-01-01
      • 2018-05-31
      相关资源
      最近更新 更多