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

Python如何检查列表元素是否同时包含两个指定字符串

问题描述

我拥有多个类似如下格式的列表:

['my_name:Ruth','my_age:23','hobbies:everything']

需要验证每个列表是否同时包含my_name和my_age:

  • 若列表仅含其中一个、或两者都不含,将其加入名为bad的列表
  • 若两者都包含,则加入名为good的列表

目前仅能实现单个字符串的检查,代码如下:

def find_letter(letter, lst):
    return any(letter in word for word in lst)
find_letter('my_name', first3)
>>>True

请问如何编写代码同时实现两个字符串的检查逻辑?

解决方案

你可以基于现有函数扩展,或者编写模块化的验证逻辑来完成分类:

方法一:复用现有检查函数

直接调用你已有的find_letter函数,分别检查两个关键词,再根据结果分类:

def find_letter(letter, lst):
    return any(letter in word for word in lst)

# 初始化分类列表
good = []
bad = []

# 示例待检查列表集合
all_lists = [
    ['my_name:Ruth','my_age:23','hobbies:everything'],
    ['my_name:Bob','hobbies:reading'],
    ['my_age:25','hobbies:sports'],
    ['hobbies:gaming']
]

for lst in all_lists:
    has_name = find_letter('my_name', lst)
    has_age = find_letter('my_age', lst)
    # 仅当两个关键词同时存在时归入good
    if has_name and has_age:
        good.append(lst)
    else:
        bad.append(lst)

print("good列表:", good)
print("bad列表:", bad)

方法二:编写专门的验证函数

如果需要更清晰的模块化实现,可以单独封装判断逻辑:

def is_valid_list(lst):
    has_name = any('my_name' in word for word in lst)
    has_age = any('my_age' in word for word in lst)
    return has_name and has_age

good = []
bad = []
all_lists = [
    ['my_name:Ruth','my_age:23','hobbies:everything'],
    ['my_name:Bob','hobbies:reading'],
    ['my_age:25','hobbies:sports'],
    ['hobbies:gaming']
]

for lst in all_lists:
    if is_valid_list(lst):
        good.append(lst)
    else:
        bad.append(lst)

两种方法的核心逻辑一致:分别确认列表中存在包含my_name和my_age的元素,只有两者同时满足时,才将该列表归入good,否则放入bad。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:20:08