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

Python如何将字典同键下的多个子列表合并为单个列表

Python字典同键下嵌套子列表按序拼接方案

问题场景

现有Python字典,单个键对应多个嵌套子列表,原始字典结构如下:

{1: [[1, 2, 3, 4, 5, 6, 7],
  [5, 1, 4, 34, 3, 65, 0, 2],
  [2, 5, 4, 5, 7, 8, 4, 7]],
 2: [[1, 5, 4, 5, 0, 1, 4, 6],
  [2, 2, 3, 5, 6, 6, 3, 9]],
 3: [[12, 35, 42, 53, 70, 71, 74, 76],
  [6, 11, 16, 17, 38, 62, 66, 77]]}

需要将每个键对应的所有子列表按原有顺序拼接为一个长列表,最终输出格式要求如下:

{1: [[1, 2, 3, 4, 5, 6, 7, 5, 1, 4, 34, 3, 65, 0, 2, 2, 5, 4, 5, 7, 8, 4, 7]],
 2: [[1, 5, 4, 5, 0, 1, 4, 6, 2, 2, 3, 5, 6, 6, 3, 9]],
 3: [[12, 35, 42, 53, 70, 71, 74, 76, 6, 11, 16, 17, 38, 62, 66, 77]]}

实现代码

写法1:字典推导式(简洁高效,推荐)

核心逻辑是遍历字典每个键值对,通过两层列表推导把同键下所有子列表的元素按顺序提取,最后在外层包裹一层列表匹配目标格式。

original_dict = {1: [[1, 2, 3, 4, 5, 6, 7],
  [5, 1, 4, 34, 3, 65, 0, 2],
  [2, 5, 4, 5, 7, 8, 4, 7]],
 2: [[1, 5, 4, 5, 0, 1, 4, 6],
  [2, 2, 3, 5, 6, 6, 3, 9]],
 3: [[12, 35, 42, 53, 70, 71, 74, 76],
  [6, 11, 16, 17, 38, 62, 66, 77]]}

result_dict = {
    key: [[item for sublist in value for item in sublist]]
    for key, value in original_dict.items()
}

写法2:普通for循环(逻辑直观,便于扩展)

如果需要在拼接过程中增加去重、过滤等额外逻辑,用for循环写法更方便调整:

result_dict = {}
for key, sublists in original_dict.items():
    merged_list = []
    for sublist in sublists:
        # 用extend把当前子列表的元素逐个加入合并列表,避免嵌套
        merged_list.extend(sublist)
    # 合并完成后外层套一层列表,匹配目标输出格式
    result_dict[key] = [merged_list]

常见失败原因

之前尝试推导式、循环没得到预期结果,基本是以下两个问题:

  • 拼接时用append代替extend添加子列表,导致元素没有拍平,还是多层嵌套结构
  • 合并得到长列表后,忘记在外层包裹一层[],导致键对应的值直接是长列表,不符合要求的嵌套格式

执行上述代码后打印result_dict,即可得到完全匹配要求的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:54:08