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

如何在Python中动态获取包含指定子串的嵌套列表元素

动态获取嵌套列表中包含指定子串的完整字符串

问题背景

给定嵌套列表结构的日志数据,需要动态定位包含子串SessionTimeOut: Request reach to it's max time.的完整字符串,避免依赖固定索引的脆弱实现。

输入数据

response_data = [
  [
    "SessionTimeOut: Request reach to it's max time. {'VwasKXznXVVzYU6iAAAB': None} were registered but ['192.168.2.2', '192.168.2.3'] were expected."
  ],
  [
    "CommonException: element with 'id' was not found"
  ],
  [
    "JenkisException: Element missing because service was down"
  ]
]

解决方案

方法1:嵌套循环遍历

通过两层循环遍历嵌套列表,逐个检查字符串是否包含目标子串,找到后立即终止循环以提升效率:

target_substring = "SessionTimeOut: Request reach to it's max time."
matched_str = None

# 遍历外层列表的每个子列表
for sublist in response_data:
    # 遍历子列表中的每个字符串
    for item in sublist:
        if target_substring in item:
            matched_str = item
            break  # 找到匹配项,终止内层循环
    if matched_str:
        break  # 已找到结果,终止外层循环

# 输出结果
if matched_str:
    print(matched_str)
else:
    print("未找到匹配的字符串")

方法2:生成器表达式简化实现

利用生成器表达式和next()函数,用更简洁的代码完成查找,同时处理未找到的边界情况:

target_substring = "SessionTimeOut: Request reach to it's max time."

# 生成器遍历所有字符串,next()返回第一个匹配项,未找到则返回None
matched_str = next(
    (item for sublist in response_data for item in sublist if target_substring in item),
    None
)

if matched_str:
    print(matched_str)
else:
    print("未找到匹配的字符串")

扩展说明

  • 若存在多个匹配项,上述代码返回第一个匹配的字符串;如需获取全部匹配结果,可将生成器转为列表:
    all_matched = [item for sublist in response_data for item in sublist if target_substring in item]
    
  • 两种方法均不依赖固定索引,能适应列表元素位置变化的场景,提升代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:24:46