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

动态嵌套对象列表中仅最深层子列表内部去重的实现方案咨询

实现方案

完全可以实现,用递归遍历任意嵌套结构即可,核心逻辑是判断当前列表是否为最深层子列表(即列表内所有元素都不是dict或list类型),仅对这类列表做内部去重,其余结构原样保留。

核心实现代码

def deduplicate_deepest_lists(obj):
    # 处理字典类型:递归处理每个value
    if isinstance(obj, dict):
        return {k: deduplicate_deepest_lists(v) for k, v in obj.items()}
    # 处理列表类型
    elif isinstance(obj, list):
        # 检查是否为最深层子列表:所有元素都不是dict/list
        is_deepest = all(not isinstance(item, (dict, list)) for item in obj)
        if is_deepest:
            # 保留元素原有顺序去重,Python3.7+原生支持
            return list(dict.fromkeys(obj))
            # 不要求顺序可替换为以下写法,效率更高
            # return list(set(obj))
        else:
            # 非最深层列表:递归处理每个元素
            return [deduplicate_deepest_lists(item) for item in obj]
    # 其他基础类型直接返回
    else:
        return obj

# 调用示例
my_list = # 你的原始嵌套数据
processed_list = deduplicate_deepest_lists(my_list)

逻辑说明

  • 递归自动适配任意层级的dict、list嵌套,不需要预先获知数据结构规则
  • 仅对没有嵌套其他容器的最深层子列表做去重,不同子列表中的重复内容会完全保留,符合需求
  • 用dict.fromkeys去重可以保留元素在列表中的首次出现顺序,避免set()打乱顺序的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:03