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

技术问询:如何合并元组列表中每个元组内的多个字典

解决元组内字典合并的几种Python方法

嘿,这个需求我经常碰到,给你几个实用的Python实现方式,轻松把每个元组里的字典都合并成一个:

方法1:简洁的字典解包(适合固定数量字典的元组)

如果你的每个元组里都固定是2个字典,用字典解包配合列表推导式最清爽:

payload = [ ( {"foo1":"value1"}, {"bar1":"value1"} ), ( {"foo2":"value2"}, {"bar2":"value2"} ) ]
result = [{**d1, **d2} for d1, d2 in payload]

原理是用**把字典里的键值对展开,然后合并到一个新字典里。

方法2:通用的reduce合并(支持任意数量的字典)

要是元组里的字典数量不固定(比如有的元组有3个甚至更多字典),用functools.reduce来迭代合并最靠谱:

先导入reduce,然后用lambda函数快速实现:

from functools import reduce

payload = [ ( {"foo1":"value1"}, {"bar1":"value1"} ), ( {"foo2":"value2"}, {"bar2":"value2", "baz2":"value3"} ) ]
result = [reduce(lambda x, y: {**x, **y}, item) for item in payload]

或者写个更清晰的合并函数,方便后续维护:

from functools import reduce

def merge_two_dicts(dict_a, dict_b):
    merged = dict_a.copy()  # 避免修改原字典
    merged.update(dict_b)
    return merged

result = [reduce(merge_two_dicts, item) for item in payload]

方法3:直观的循环更新(新手友好)

如果觉得上面的方法有点抽象,用嵌套循环一步步更新字典,逻辑一目了然:

payload = [ ( {"foo1":"value1"}, {"bar1":"value1"} ), ( {"foo2":"value2"}, {"bar2":"value2"} ) ]
result = []

for tuple_item in payload:
    combined_dict = {}
    for single_dict in tuple_item:
        combined_dict.update(single_dict)  # 把每个字典的键值对加到合并字典里
    result.append(combined_dict)

不管用哪种方法,最终得到的result都是你想要的格式:

print(result)
# 输出: [{"foo1":"value1","bar1":"value1"}, {"foo2":"value2","bar2":"value2"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:24