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

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

為鍵中的每個斜杠解壓字典的節點

為鍵中的每個斜杠解壓字典的節點

呼如林 2023-07-27 14:17:30
我有一個字典:a = {  "group_a/category_a/metric_a": 5,  "group_a/category_a/metric_b": 4,  "group_a/category_b/metric_a": 3,  "group_a/category_b/metric_b": 2,  "group_b/category_a/metric_d": 1}我想通過創建一個由每個斜杠分隔的嵌套視圖來解壓節點,結果如下所示:b = {  "group_a": {        "category_a": {            "metric_a": 5,            "metric_b": 4        },        "category_b": {            "metric_a": 3,            "metric_b": 2        },   "group_b": {        "category_a": {            "metric_d": 1        }    }}我們怎樣才能從a到b呢?我在嘗試將上面的字典發布到 Firebase 時遇到了這個問題,因為節點group_a/category_a/metric_a不被接受,而嵌套的字典是允許的。
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

循環遍歷,將每個鍵拆分為鍵列表,根據需要創建子字典......


from pprint import pprint


a = {

  "group_a/category_a/metric_a": 5,

  "group_a/category_a/metric_b": 4,

  "group_a/category_b/metric_a": 3,

  "group_a/category_b/metric_b": 2,

  "group_b/category_a/metric_d": 1

}


b = {}

for k, v in a.items():

    dct = b

    keys = k.split("/")

    for key in keys[:-1]:

        if key not in dct:

            dct[key] = {}

        dct = dct[key]

    dct[keys[-1]] = v


pprint(b)

給出:


{'group_a': {'category_a': {'metric_a': 5, 'metric_b': 4},

             'category_b': {'metric_a': 3, 'metric_b': 2}},

 'group_b': {'category_a': {'metric_d': 1}}}


查看完整回答
反對 回復 2023-07-27
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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