的樹狀列表我有一個看起來像這樣的結構:遍歷和修改字典結構
[ {'id': 4, 'children': None},
{'id': 2, 'children':
[ {'id': 1, 'children':
[ {'id': 6, 'children': None},
{'id': 5, 'children': None} ]
},
{'id': 7, 'children':
[ {'id': 3, 'children': None} ]
}
]
}
]
我也有選擇的ID的列表,[4, 5, 6, 7]
。我想遍歷列表,併爲列表中的每個對象添加一個selected
密鑰,其值爲1
(如果選中);如果不是,則爲0
。
目前我使用此功能遞歸這樣做:
def mark_selected(tree, selected):
for obj in tree:
obj['selected'] = 1 if obj['id'] in selected else 0
if obj['children'] is not None:
obj['children'] = mark_selected(obj['children'], selected)
return tree
這似乎很好地工作,但我想知道如果有一個更聰明的方式做到這一點,可能使用列表理解或發電機。
任何人都可以想出一個更優雅的解決方案嗎?
感謝您的建議。我沒有使用布爾類型,因爲它將被轉換爲JSON並與另一種需要'0'和'1'的語言交互。 – 2010-12-07 00:06:47