亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 Python 3 中遞歸地將文件索引添加到字典中

在 Python 3 中遞歸地將文件索引添加到字典中

繁星點點滴滴 2022-08-16 18:17:29
我想從字典中的文件添加文本,稱為“數據”。該文件如下所示:part-a    thing-a    part-a-a        thing-a    part-a-b        thing-a        thing-bpart-b    thing-a    thing-b    thing-c如何將文件放在字典中,使其看起來像這樣?{"all":  [  {  "part-a":    [    "thing-a",    {      "part-a-a":["thing-a"],      "part-a-b":["thing-a","thing-b"]    }    ],  "part-b":    [    "thing-a",    "thing-b",    "thing-c"    ]  }  ]}我真的不知道,怎么做...
查看完整描述

1 回答

?
慕村9548890

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

您可以與遞歸一起使用:itertools.groupby


from itertools import groupby as gb

import re

def get_dict(d):

   _r, _d = [], {}

   for a, _b in gb(d, key=lambda x:not x[0]):

      if a:

         _r.extend([u for _, u in _b])             

      else:

         _d[_r.pop()] = get_dict([[j[4:], k] for j, k in _b]) 

   return _r+([] if not _d else [_d])

import json

data = [re.findall('^\s+|[\w\-]+', i) for i in filter(None, content.split('\n'))]

print(json.dumps(get_dict([['' if not a else a[0], b] for *a, b in data]), indent=4))

輸出:


[

   {

     "part-a": [

        "thing-a",

        {

            "part-a-a": [

                "thing-a"

            ],

            "part-a-b": [

                "thing-a",

                "thing-b"

            ]

        }

      ],

      "part-b": [

        "thing-a",

        "thing-b",

        "thing-c"

      ]

   } 

]


查看完整回答
反對 回復 2022-08-16
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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