我有一個字典: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}}}
添加回答
舉報
0/150
提交
取消