我有一些采用以下格式 (mylist) 的資料,我正在嘗試將其轉換為嵌套字典,但正在努力使格式正確。我嘗試了幾種迭代和轉換的變體,但無法獲得所需的結果。我可以獲得一些幫助,使用 mylist 中的資料格式以所需的格式獲取資料,如所需的結果所示嗎?
mylist = [
[('floor', 'first_floor'), ('bed_room', 'room1'), ('windows', 2), ('color', 'violet')],
[('floor', 'second_floor'), ('bed_room', 'room2'), ('windows', 4), ('color', 'violet')],
]
nest_keys = ['floor', 'bedroom']
cmd_tree = {}
for i in mylist:
last_element = True
for key in reversed(nest_keys):
if last_element is True:
cmd_tree = {key: dict([x for x in i if x[0] not in nest_keys])}
last_element = False
else:
cmd_tree = {key: cmd_tree}
print(cmd_tree)
當前結果:
{'floor': {'bedroom': {'bed_room': 'room2', 'windows': 4, 'color': 'violet'}}}
預期結果:
{'floor': {'first_floor': {'bed_room': {'room1': {'color': 'white',
'windows': 2}}},
'second_floor': {'bed_room': {'room2': {'color': 'violet',
'windows': 4}}}}}
uj5u.com熱心網友回復:
無需反向回圈,遍歷串列,每次初始迭代都是一個樓層,然后遍歷其內容以創建樓層詳細資訊:
result = {}
br = 'bed_room'
for (_, floor_name), *details in mylist:
result[floor_name] = {br: {}}
for name, detail in details:
if name == br:
room = detail
result[floor_name][br][room] = {}
else:
result[floor_name][br][room][name] = detail
print({'floor': result})
{'floor': {'first_floor': {'bed_room': {'room1': {'color': 'violet',
'windows': 2}}},
'second_floor': {'bed_room': {'room2': {'color': 'violet',
'windows': 4}}}}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312979.html
上一篇:Python-將同一標題下的每個串列資料的新行寫入csv
下一篇:運行時未檢測到切片上的競爭
