You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Id升序后将父ID匹配的对象紧邻对应Id排列?

这个层级排序的需求挺典型的,我帮你梳理下实现逻辑,不管你用Python、Java还是其他编程语言,核心思路都是通用的:

实现步骤拆解

1. 先明确排序规则的核心逻辑

你的需求本质是**「先按顶级元素的Id升序排列,再让每个顶级元素的直接子元素紧跟其后(子元素自身也按Id升序)」**——这里的顶级元素指的是ParentId为null或者0的条目(从你的示例能看出来这两类都是顶层节点)。

2. 预处理:建立父-子映射表

首先把所有元素按ParentId分组,方便后续快速找到某个父元素对应的子元素。同时要确保每个子元素列表本身是按Id升序排好的。

# 伪代码(Python风格)
original_list = [
    {"Id":751, "ParentId":None},
    {"Id":752, "ParentId":0},
    {"Id":753, "ParentId":751},
    {"Id":754, "ParentId":None},
    {"Id":755, "ParentId":754},
    {"Id":756, "ParentId":0}
]

# 构建父Id到子元素的映射
parent_map = {}
for item in original_list:
    parent_id = item["ParentId"]
    if parent_id not in parent_map:
        parent_map[parent_id] = []
    parent_map[parent_id].append(item)

# 给每个子元素列表按Id升序排序
for key in parent_map:
    parent_map[key].sort(key=lambda x: x["Id"])

3. 生成最终排序后的列表

先把所有顶级元素(ParentId为None或0)挑出来,按Id升序排列;然后逐个遍历顶级元素,先把它加入结果列表,再紧接着加入它的所有子元素(如果有的话)。

sorted_list = []

# 筛选顶级元素并按Id升序排序
top_level_items = [item for item in original_list if item["ParentId"] is None or item["ParentId"] == 0]
top_level_items.sort(key=lambda x: x["Id"])

# 遍历顶级元素,添加自身和子元素
for item in top_level_items:
    sorted_list.append(item)
    # 取出当前元素的子元素(没有的话返回空列表)
    child_items = parent_map.get(item["Id"], [])
    sorted_list.extend(child_items)

# 输出结果就是你想要的
print(sorted_list)

4. 验证结果

用你的示例数据跑上面的逻辑,得到的结果正好是:

[
    {"Id":751, "ParentId":None},
    {"Id":753, "ParentId":751},
    {"Id":752, "ParentId":0},
    {"Id":754, "ParentId":None},
    {"Id":755, "ParentId":754},
    {"Id":756, "ParentId":0}
]

扩展:支持更深层级的嵌套

如果你的数据有多层级嵌套(比如子元素还有自己的子元素),只需要把添加子元素的逻辑改成递归即可:

def add_item_and_children(item, result_list, parent_map):
    result_list.append(item)
    child_items = parent_map.get(item["Id"], [])
    for child in child_items:
        add_item_and_children(child, result_list, parent_map)

# 调用递归函数处理顶级元素
sorted_list = []
for item in top_level_items:
    add_item_and_children(item, sorted_list, parent_map)

内容的提问来源于stack exchange,提问作者refresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:56:35