第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何展平嵌套 JSON 文件以檢索預期字段

如何展平嵌套 JSON 文件以檢索預期字段

料青山看我應如是 2023-12-12 14:56:02
我有以下 JSON 文件:[   {'docType': 'custom',   'fields':     {      'general_info': None,      'power': 20,      'safety':        {         'boundingBox': [2.375,9.9,4.98,9.9,4.98,10.245,2.375,10.245],         'confidence': 0.69,         'page': 22,         'text': 'bla-bla-bla',         'type': 'string',         'valueString': 'bla-bla-bla'       },       'replacement':         {          'boundingBox': [2.505,2.51,2.54,2.51,2.54,3.425,2.505,3.425],          'confidence': 0.262,          'page': 7,          'text': 'bla-bla-bla',          'type': 'string',          'valueString': 'bla-bla-bla'         },        'document_id': 'x123'     }    }]我想遍歷所有field值并text從嵌套字段中提取。預期結果如下:{   'labels':     {       'general_info': None,       'power': 20,       'safety': 'bla-bla-bla',       'replacement': 'bla-bla-bla',       'document_id': 'x123'     } }如何扁平化 JSON 文件并獲得預期結果?這是我到目前為止所嘗試過的:import jsonjson_object = json.load(raw_json)fields = {}for field in json_object:    for attribute, value in field.items():        fields[attribute] = valuefields_json = json.dumps(fields, indent = 4)但是,我不知道如何遞歸進入嵌套字段
查看完整描述

3 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

將其加載為 python 列表后,只需循環(huán)它以獲取dict調用的內部鍵fields并簡單地對其進行循環(huán)keys,values一旦找到value其類型,dict您就必須對其進行循環(huán)并獲取內部值,key然后text僅獲取值并成為key父級key


例子

from pprint import pprint


res = {}

for sub in content:

   for x, y in sub['fields'].items():

    if isinstance(y, dict):

        for i, e in y.items():

            if i == 'text':

                res[x] = e

    else:

        res[x] = y


final = {}

final['label'] = res

pprint(final)


輸出

{'label': {'document_id': 'x123',

           'general_info': None,

           'power': 20,

           'replacement': 'bla-bla-bla',

           'safety': 'bla-bla-bla'}}


查看完整回答
反對 回復 2023-12-12
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

你應該使用遞歸來遍歷字典。我的解決方案是:


import json

with open('raw_json', 'r') as j:

    d = json.load(j)

    # print(d)


def dict_walker(obj ,key=None):

    if isinstance(obj, dict):

        for key in obj:

            dict_walker(obj[key], key)

    else:

        print(key, ':', obj)


dict_walker(d)

出去:


docType : custom

general_info : None

power : 20

boundingBox : [2.375, 9.9, 4.98, 9.9, 4.98, 10.245, 2.375, 10.245]

confidence : 0.69

page : 22

text : bla-bla-bla

type : string

valueString : bla-bla-bla

boundingBox : [2.505, 2.51, 2.54, 2.51, 2.54, 3.425, 2.505, 3.425]

confidence : 0.262

page : 7

text : bla-bla-bla

type : string

valueString : bla-bla-bla

document_id : x123


查看完整回答
反對 回復 2023-12-12
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

您可以編寫一個遞歸函數。當值是字典時,它應該調用自身。


這是一個例子。


def flatten_fields(d):

    out = {}

    for k, v in d.items():

        if isinstance(v, dict):

            out[k] = flatten_fields(v)

        elif k == 'text':

            return v

        elif isinstance(v, list):

            continue

        else:

            out[k] = v

    return out

要運行它,您可以迭代json_object. 上面只有一個例子,但方法如下:


labels = []

for d in json_object:

    labels.append({'labels': flatten_fields(d.get('fields', {}))})


labels

# returns:

[{'labels': {'general_info': None,

   'power': 20,

   'safety': 'bla-bla-bla',

   'replacement': 'bla-bla-bla',

   'document_id': 'x123'}}]


查看完整回答
反對 回復 2023-12-12
  • 3 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號