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

如何合并两个含重复键的Dict并实现F1关键词查询功能?

嘿,我来帮你搞定这个问题!合并带重复键的字典+搜索F1返回结果的需求,其实分两步就能轻松实现,咱们一步步来:

第一步:合并两个存在重复键的字典

这里分两种常见场景,你可以根据自己的需求选择:

场景1:重复键保留最后一个字典的值(覆盖模式)

如果重复键只需要保留最后出现的那个值,Python 3.9+可以用|运算符,旧版本用字典解包的方式:

dict1 = {"F1": "ResultA", "F2": "ResultB"}
dict2 = {"F1": "ResultC", "F3": "ResultD"}

# Python 3.9+ 简洁写法
merged_dict = dict1 | dict2
# 兼容Python 3.8及以下的写法
# merged_dict = {**dict1, **dict2}

print(merged_dict)  # 输出: {'F1': 'ResultC', 'F2': 'ResultB', 'F3': 'ResultD'}

这种方式下,后面的字典(dict2)会覆盖前面字典(dict1)的重复键值。

场景2:重复键的值合并为列表(保留所有数据)

如果不想丢失任何一个重复键的值,咱们可以把同一个键的所有值放到列表里,用普通循环或者collections.defaultdict都能实现:

方式一:普通循环实现
dict1 = {"F1": "ResultA", "F2": "ResultB"}
dict2 = {"F1": "ResultC", "F3": "ResultD"}

merged_dict = {}
# 先把第一个字典的键值对存入,值转成列表
for key, val in dict1.items():
    merged_dict[key] = [val]
# 处理第二个字典,重复键就追加值,新键就创建列表
for key, val in dict2.items():
    if key in merged_dict:
        merged_dict[key].append(val)
    else:
        merged_dict[key] = [val]

print(merged_dict)  # 输出: {'F1': ['ResultA', 'ResultC'], 'F2': ['ResultB'], 'F3': ['ResultD']}
方式二:用defaultdict简化代码
from collections import defaultdict

dict1 = {"F1": "ResultA", "F2": "ResultB"}
dict2 = {"F1": "ResultC", "F3": "ResultD"}

merged_dict = defaultdict(list)
# 遍历两个字典,把所有值追加到对应键的列表里
for d in [dict1, dict2]:
    for key, val in d.items():
        merged_dict[key].append(val)

# 要是需要转成普通字典,就用dict()转换
merged_dict = dict(merged_dict)
print(merged_dict)  # 输出和上面一致

第二步:搜索关键词F1返回结果

合并完字典之后,搜索就非常简单了,推荐用get()方法,避免键不存在时报错:

针对场景1(值是单个元素):

# 用get()方法,第二个参数是键不存在时的默认返回值
result = merged_dict.get("F1", "未找到匹配的结果")
print(result)  # 输出: ResultC

针对场景2(值是列表):

result = merged_dict.get("F1", ["未找到匹配的结果"])
print(result)  # 输出: ['ResultA', 'ResultC']

你也可以把搜索逻辑封装成一个函数,方便反复调用:

def search_target(merged_dict, keyword):
    return merged_dict.get(keyword, "未找到该关键词对应的结果")

# 调用示例
print(search_target(merged_dict, "F1"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:09:41