![](/img/trans.png)
[英]How can I convert a TypedObject to a nested dictionary in Python?
[英]How can I convert a nested dictionary to a table in python
假設我有一個嵌套的字典,比如一本書的章節和章節(平衡的樹結構)。 我想將它轉換為一個表,其中每個分支都是一行,鍵是葉子值之外的值。
{
"A1": {
"A1-1": {
"A1-1-1": "0.2028",
"A1-1-2": "0.1901",
},
"A1-2": {
"A1-2-1": "0.1951",
"A1-2-2": "0.1806",
},
},
"A2" {
...
喜歡:
A1 A1-1 A1-1-1 0.2028
A1 A1-1 A1-1-2 0.1901
A1 A1-2 A1-2-1 0.1951
我嘗試使用json_normalize(data)
但它只給出了 1 行和一些嵌套的列標題。
您可以使用一些遞歸處理:
def superitems(obj):
if isinstance(obj, dict):
for k, v in obj.items():
for i in superitems(v):
yield (k,) + i
else:
yield (obj,)
[*superitems(data)]
# [('A1', 'A1-1', 'A1-1-1', '0.2028'),
# ('A1', 'A1-1', 'A1-1-2', '0.1901'),
# ('A1', 'A1-2', 'A1-2-1', '0.1951'),
# ('A1', 'A1-2', 'A1-2-2', '0.1806')]
這可以用於任何輸出:
print("\n".join(map("\t".join, superitems(data))))
A1 A1-1 A1-1-1 0.2028
A1 A1-1 A1-1-2 0.1901
A1 A1-2 A1-2-1 0.1951
A1 A1-2 A1-2-2 0.1806
def flatten(d, c = []):
for a, b in d.items():
yield from([c + [a, b]]
if not isinstance(b, dict)
else flatten(b, c + [a]))
dict = {....}
output = list(flatten(dict))
print(tabulate(output))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.