我得到了以下Python字典:
d = {'DataType': 'XY', 'DataReportGrp': {'NoSides_1': {'Side': '2', 'Reports': {'NoReportIDs_1': {'ReportID': '250001'}, 'NoReportIDs_2': {'ReportID': '250002'}}}}}
我想将其转换为类似以下内容的HTML列表:
<li> DataType </li>
<li> DataReportGrp </li>
<ul>
<li> NoSides_1 </li>
<ul>
<li> Side </li>
<li> Reports </li>
<ul>
<li> NoReportIDs_1 </li>
<ul>
<li> ReportID </li>
</ul>
<li> NoReportIDs_2 </li>
<ul>
<li> ReportID </li>
</ul>
</ul>
</ul>
</ul>
我试着用下面的代码来做这件事。不幸的是,我不知道要实现什么逻辑来确定何时在正确的时间关闭</ul>
组,而且可能是该字典将来会有更多嵌套级别:
def nested_groups(levels):
groups = list()
def going_through(d):
if isinstance(levels, dict):
for kd, kv in d.items():
if isinstance(kv, dict):
groups.append(kd)
print(f" <li> --- {kd} </li>")
print(" <ul>")
going_through(kv)
else:
print(f" <li> --- {kd} </li>")
going_through(levels)
print("</ul>" * len(groups))
这导致:
<li> --- DataType </li>
<li> --- DataReportGrp </li>
<ul>
<li> --- NoSides_1 </li>
<ul>
<li> --- Side </li>
<li> --- Reports </li>
<ul>
<li> --- NoReportIDs_1 </li>
<ul>
<li> --- ReportID </li>
<li> --- NoReportIDs_2 </li>
<ul>
<li> --- ReportID </li>
</ul></ul></ul></ul></ul>
我们将非常感谢您的帮助
可以使用递归生成器函数:
输出:
相关问题 更多 >
编程相关推荐