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

如何按给定示例合并字典列表并向list1追加元素输出结果?

合并对应位置字典并移除指定字段的实现方法

需求说明

已有两个字典列表data和data2,需要将两个列表中对应索引位置的字典进行合并,同时移除data字典中的id字段,最终将合并后的结果存入list1。

实现方法

方法一:循环遍历+字典合并

通过索引遍历两个列表,先复制data中的字典并删除id字段(避免修改原数据),再和data2对应位置的字典合并,最后添加到list1中:

data = [{"id":1,"name":"vikash","roll":39},{"id":2,"name":"kumar","roll":3}] 
data2 = [{"hobby":"football","food":"any"},{"hobby":"basketball","food":"any"}]
list1 = []

for d1, d2 in zip(data, data2):
    temp = d1.copy()
    del temp["id"]
    merged_dict = {**temp, **d2}
    list1.append(merged_dict)

方法二:列表推导式简化写法

用列表推导式压缩代码逻辑,写法更简洁:

data = [{"id":1,"name":"vikash","roll":39},{"id":2,"name":"kumar","roll":3}] 
data2 = [{"hobby":"football","food":"any"},{"hobby":"basketball","food":"any"}]

list1 = [
    {k: v for k, v in d1.items() if k != "id"} | d2
    for d1, d2 in zip(data, data2)
]

注:|字典合并运算符仅支持Python 3.9及以上版本,低版本可替换为{**{k:v for k,v in d1.items() if k!='id'}, **d2}

方法三:直接修改原数据(慎用)

如果不需要保留原data列表的内容,可以直接用pop()移除id字段,减少内存开销:

data = [{"id":1,"name":"vikash","roll":39},{"id":2,"name":"kumar","roll":3}] 
data2 = [{"hobby":"football","food":"any"},{"hobby":"basketball","food":"any"}]
list1 = []

for d1, d2 in zip(data, data2):
    d1.pop("id")
    list1.append({**d1, **d2})

注意:此方法会改变原data列表的内容,若需保留原始数据,不建议使用。

验证结果

执行上述任意一种方法后,list1的内容都会符合预期:

[
    {"name":"vikash","roll":39,"hobby":"football","food":"any"},
    {"name":"kumar","roll":3,"hobby":"basketball","food":"any"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:40:35