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

如何在Python中筛选列表内匹配关键词的数据

解决方法

你的代码存在几个问题:

  • 变量名大小写不统一:定义的是Key = ['ea'],但判断时用了key,会触发NameError
  • 逻辑偏离需求:你把每个元素的Name存入newlst,但最终需要保留完整的字典对象,而不是只存名字;而且嵌套循环会重复检查之前加入的元素,完全没必要

直接用列表推导式就能简洁实现需求,或者用普通循环筛选:

方法一:列表推导式(推荐)

lst = [{'Name': 'an1-cs-ea-Primary-Asg', 'Region': 'us-east-2'},{'Name': 'an1-cs-ea-Secondary-Asg', 'Region': 'us-east-2'},{'Name': 'an1-te1-atrmm-Asg', 'Region': 'us-east-2'}]
keys = ['ea']
# 筛选Name包含任意一个关键词的字典
op = [item for item in lst if any(key in item['Name'] for key in keys)]
print(op)

方法二:普通循环

lst = [{'Name': 'an1-cs-ea-Primary-Asg', 'Region': 'us-east-2'},{'Name': 'an1-cs-ea-Secondary-Asg', 'Region': 'us-east-2'},{'Name': 'an1-te1-atrmm-Asg', 'Region': 'us-east-2'}]
keys = ['ea']
op = []
for item in lst:
    # 检查当前字典的Name是否包含任意关键词
    for key in keys:
        if key in item['Name']:
            op.append(item)
            break  # 找到匹配就停止检查其他关键词
print(op)

两种方法输出都符合你的期望:

[{'Name': 'an1-cs-ea-Primary-Asg', 'Region': 'us-east-2'}, {'Name': 'an1-cs-ea-Secondary-Asg', 'Region': 'us-east-2'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:34:57