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

Python中检查字典值是否为其他键值对值的子串问题求助

解决方案:查找字典中包含指定键值子串的键值对

需求梳理

  • 从字典disease_dict中匹配不区分大小写的指定键(如Stroke/stroke、Glaucoma/glaucoma),获取其对应的ID列表
  • 遍历字典中其他键,检查它们的列表值里是否存在包含上述ID作为子串的元素,收集所有符合条件的键值对

示例字典

disease_dict = {
    'Stroke': ['C10.228.140.300.775', 'C14.907.253.855'],
    'Stroke, Lacunar': ['C10.228.140.300.275.800', 'C10.228.140.300.775.600', 'C14.907.253.329.800', 'C14.907.253.855.600'],
    'Glaucoma': ['H01.111.220'],
    'Primary Open-Angle Glaucoma': ['H01.111.220.120']
}

改进后的代码实现

# 定义要匹配的目标术语(不区分大小写)
target_terms = {'stroke', 'glaucoma'}

# 收集目标术语对应的所有ID
target_ids = []
for key, ids in disease_dict.items():
    if key.lower() in target_terms:
        target_ids.extend(ids)

# 收集所有符合条件的键值对(包含目标ID子串的非目标键)
matching_pairs = {}
for key, ids in disease_dict.items():
    # 跳过目标键本身
    if key.lower() in target_terms:
        continue
    # 检查当前键的每个ID是否包含任意目标ID作为子串
    matched_ids = [id_str for id_str in ids if any(target_id in id_str for target_id in target_ids)]
    if matched_ids:
        matching_pairs[key] = matched_ids

# 输出结果
print("目标术语对应的ID:")
print(target_ids)
print("\n包含目标ID子串的键值对:")
for k, v in matching_pairs.items():
    print(f"{k}: {v}")

代码说明

  • 目标键匹配:通过key.lower()统一转成小写,和target_terms集合匹配,避免重复判断大小写形式,更简洁高效
  • 收集目标ID:用extend()把所有目标键的ID合并到一个列表中
  • 筛选符合条件的键值对:遍历字典时跳过目标键,对每个非目标键的ID列表,用列表推导式筛选出包含任意目标ID子串的元素,只要有符合的就把该键和对应元素存入结果字典
  • 结果输出:分别打印目标ID和最终匹配的键值对

运行结果示例

目标术语对应的ID:
['C10.228.140.300.775', 'C14.907.253.855', 'H01.111.220']

包含目标ID子串的键值对:
Stroke, Lacunar: ['C10.228.140.300.775.600', 'C14.907.253.855.600']
Primary Open-Angle Glaucoma: ['H01.111.220.120']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:15:40