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

Python如何将两个字典列表按对应位置合并为一个字典列表

问题描述

需按索引位置合并两组分别存储title、image字段的字典列表,规则为同位置字典的键值对合并为新字典,最终按原顺序生成新列表。

  • 原始输入:
title = [{'title': 'Title Text One'},
         {'title': 'Title Text Two'},
         {'title': 'Title Text Three'}]
image = [{"image": "happy.jpg"},
         {"image": "smile.jpg"},
         {"image": "angry.jpg"}]
  • 期望输出:
data = [{'title': 'Title Text One', 'image': 'happy.jpg'},
        {'title': 'Title Text Two', 'image': 'smile.jpg'},
        {'title': 'Title Text Three', 'image': 'angry.jpg'}]
实现方法

可以通过zip同步遍历两个列表的同位置元素,再合并字典即可,以下是不同场景的写法:

  1. 通用循环写法(兼容Python 3.5+版本,可读性高)
data = []
# 按顺序配对两个列表同位置的字典
for title_item, image_item in zip(title, image):
    # 解包两个字典的键值对,合并为新字典
    merged_item = {**title_item, **image_item}
    data.append(merged_item)
  • 说明:zip(title, image)会按顺序依次取出两个列表同位置的元素配对;字典解包语法{**a, **b}会把两个字典的键值对合并到新字典中,若存在同名键,后一个字典的值会覆盖前一个,当前场景下两组字典的键无重叠,可直接使用。
  1. 列表推导式写法(代码更简洁)
data = [{**t, **img} for t, img in zip(title, image)]
  1. Python 3.9+ 版本专属写法(利用字典合并运算符,语义更直观)
data = [t | img for t, img in zip(title, image)]

注意:默认zip会在较短的列表遍历完成后停止,如果两个列表长度不一致,长列表多出的元素会被丢弃。如果需要保留长列表所有元素、缺失位置填充默认值,可以替换为itertools.zip_longest实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:45:29