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

如何将两个子网列表合并为字典,相同键对应值组成列表?

合并子网列表为归集字典的实现方法

需求:将两个列表agg(作为字典的键)和subnet(作为对应键的值)合并为一个字典,相同键对应的子网值会被归集到同一个列表中。

示例数据

agg = [
    '10.109.0.0/16',
    '10.109.0.0/16',
    '10.109.0.0/16',
    '9.16.0.0/16',
    '9.16.0.0/16',
    '9.16.0.0/16'
]
subnet = [
    '10.109.0.0/19',
    '10.109.32.0/19',
    '10.109.64.0/19',
    '9.16.17.0/24',
    '9.16.18.0/24',
    '9.16.19.0/24'
]
# 预期结果(注:示例中'10.109.32.0'应为'10.109.32.0/19',属于笔误)
result = {
    '10.109.0.0/16':['10.109.0.0/19','10.109.32.0/19','10.109.64.0/19'],
    '9.16.0.0/16' : ['9.16.17.0/24','9.16.18.0/24','9.16.19.0/24']
}

解决方案

方法1:基础字典循环

利用字典的setdefault方法,自动处理键不存在的情况,直接追加对应子网值:

result = {}
for key, value in zip(agg, subnet):
    result.setdefault(key, []).append(value)
print(result)

方法2:使用collections.defaultdict

通过defaultdict预先指定默认值为列表,代码更简洁:

from collections import defaultdict

result = defaultdict(list)
for key, value in zip(agg, subnet):
    result[key].append(value)
# 若需要转为普通字典,可执行:result = dict(result)
print(result)

两种方法都能得到预期的归集结果,defaultdict写法更简洁,适合处理这类需要默认容器的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:32:21