【python】 list dict 字典合并

23 篇文章 0 订阅

合并规则:

  1. project_id,description想同则合并成一个,没有的话新增
# -- coding:utf-8 --
# 初始列表
job_groups = [
    {"project_id": 25, "description": "mdwsw 666", "count_job_group": 8},
    {"project_id": 12, "description": "mdwsw 222", "count_job_group": 10},
    {"project_id": 19, "description": "mdwsw 111", "count_job_group": 118},
    {"project_id": 14, "description": "mdwsw 444", "count_job_group": 2},
    {"project_id": 15, "description": "mdwsw 555", "count_job_group": 2}
]

jobs = [
    {"project_id": 12, "description": "mdwsw 222", "count_job": 2},
    {"project_id": 19, "description": "mdwsw 111", "count_job": 5},
    {"project_id": 22, "description": "mdwsw 333", "count_job": 1}
]

# 合并列表
def merge_lists(list1, list2):
    merged = list1.copy()  # 创建list1的副本以避免修改原始列表
    for item2 in list2:
        # 查找是否有相同的project_id和description
        found = False
        for item1 in merged:
            if item1['project_id'] == item2['project_id'] and item1['description'] == item2['description']:
                # 如果找到,合并字典
                item1.update(item2)
                found = True
                break
        if not found:
            # 如果没有找到,添加到合并列表中
            merged.append(item2)
    return merged

# 执行合并
merged_list = merge_lists(job_groups, jobs)

# 打印合并后的列表
print(merged_list)


[{‘project_id’: 25, ‘description’: ‘mdwsw 666’, ‘count_job_group’: 8}, {‘project_id’: 12, ‘description’: ‘mdwsw 222’, ‘count_job_group’: 10, ‘count_job’: 2}, {‘project_id’: 19, ‘description’: ‘mdwsw 111’, ‘count_job_group’: 118, ‘count_job’: 5}, {‘project_id’: 14, ‘description’: ‘mdwsw 444’, ‘count_job_group’: 2}, {‘project_id’: 15, ‘description’: ‘mdwsw 555’, ‘count_job_group’: 2}, {‘project_id’: 22, ‘description’: ‘mdwsw 333’, ‘count_job’: 1}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值