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

Python中如何匹配列表内两个字典的相同键以获取对应值

需求可行性与实现说明

首先需要明确一个Python基础规则:原生字典不允许存在重复键,你给出的预期输出示例中单个字典内有两个相同的IP键,这种结构在Python中无法直接实现,重复键的后一个值会直接覆盖前一个值。你可以根据实际业务需要选择以下两种可行的实现方案:

方案1:IP聚合结构(最常用)

将同一IP对应的所有值合并存储,输出结构为单字典,示例输出:{'10.1.1.0': [1, 3], '10.1.1.1': [2, 4]}
实现思路:

  • 拆分输入列表得到两个待处理字典
  • 取两个字典的键的交集,得到同时存在的IP键
  • 遍历所有公共IP,分别从两个字典取出对应的值合并后存入结果
    代码示例:
# 输入数据
input_list = [{'10.1.1.0':[1], '10.1.1.1':[2]}, {'10.1.1.0':[3], '10.1.1.1':[4]}]
dict_a, dict_b = input_list[0], input_list[1]
# 取公共IP键
common_ips = dict_a.keys() & dict_b.keys()
# 聚合结果
res = {}
for ip in common_ips:
    res[ip] = dict_a[ip] + dict_b[ip]
print(res)

方案2:按IP分组保留原始值

如果需要保留两个原始值的独立存储,调整输出为列表嵌套键值对元组的结构,示例输出:[ [('10.1.1.0', [1]), ('10.1.1.0', [3])], [('10.1.1.1', [2]), ('10.1.1.1', [4])] ]
实现思路:

  • 拆分输入列表得到两个待处理字典
  • 取两个字典的公共IP键
  • 遍历每个公共IP,分别从两个字典取值组装为键值对元组,按IP分组存入结果列表
    代码示例:
input_list = [{'10.1.1.0':[1], '10.1.1.1':[2]}, {'10.1.1.0':[3], '10.1.1.1':[4]}]
dict_a, dict_b = input_list[0], input_list[1]
common_ips = dict_a.keys() & dict_b.keys()
res = []
for ip in common_ips:
    res.append([(ip, dict_a[ip]), (ip, dict_b[ip])])
print(res)

如果确实需要支持重复键的类字典结构,可以使用第三方库multidict的MultiDict类实现,普通业务场景不推荐该方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:21:00