可以使用递归方式遍历列表,并为每个元素记录其深度级别,然后按照深度级别对列表进行排序。
示例代码如下:
# 定义一个函数,用于遍历列表并为其元素设置深度级别
def set_depth_level(lst, level=0):
for item in lst:
item["depth_level"] = level
if "children" in item:
set_depth_level(item["children"], level=level+1)
# 定义一个函数,用于按深度级别排序列表
def sort_by_depth_level(lst):
set_depth_level(lst)
return sorted(lst, key=lambda x: x["depth_level"])
# 示例数据
data = [
{"name": "A", "children": [
{"name": "B", "children": [
{"name": "D"}
]},
{"name": "C", "children": [
{"name": "E"},
{"name": "F"}
]}
]}
]
# 对列表进行排序
result = sort_by_depth_level(data)
# 打印排序后的结果
print(result)
运行该代码可以得到以下输出:
[
{"name": "A", "children": [
{"name": "B", "children": [
{"name": "D", "depth_level": 2}
], "depth_level": 1},
{"name": "C", "children": [
{"name": "E", "depth_level": 2},
{"name": "F", "depth_level": 2}
], "depth_level": 1}
], "depth_level": 0}
]
可以看到,列表中的每个元素都被赋予了深度级别,并且整个列表按深度级别正确地进行了排序。