python - 在下面提到的情况下,如何有效地比较两个列表中的字符串:
问题描述
t_codes = ["11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Operator",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-ZRA-User-VM-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Operator",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-ZRA-User-VM-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Operator",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-ZRA-User-VM-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-CUSTOMER-IN-ZRA-User-VM-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator"]
t_names = ["Outsite", "NewFm", "CUSTOMER-IN"]
上面提到的是我的初始输入列表。
我需要通过将 t_names 的每个元素与 t_codes 的每个元素进行匹配来从 t_codes 创建 2 个列表以创建 -
清单 1 是
["11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator" , "11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator"]
此列表包含不包含 t_names 中提到的任何字符串的所有元素
清单 2 是
["11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Operator",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-ZRA-User-VM-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Operator",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Admin",
"11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-ZRA-User-VM-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Operator",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-ZRA-User-VM-Admin",
"22-GLB-IaaS-PaaS-PROD-MSDP-CUSTOMER-IN-ZRA-User-VM-Admin" ]
此列表包含来自 t_names 的 Outsite、NewFm、CUSTOMER-IN 字符串。
我尝试的是:
does_contain = []
doesnt_contain = []
for tool in t_names:
for team in t_codes:
if bool(re.search(tool, team)):
does_contain.append(team)
else:
doesnt_contain.append(team)
print(does_contain)
print("-------------")
print(doesnt_contain)
由于显而易见的原因,这并没有给我预期的输出。请帮忙。
解决方案
海事组织,您正在寻找any(...)
:
list1, list2 = [[], []]
for t_code in t_codes:
if any(t_name in t_code for t_name in t_names):
list1.append(t_code)
else:
list2.append(t_code)
print(list1)
print(list2)
这将为您的给定输入产生:
['11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Operator', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-VM-ZRA-Admin', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-Outsite-ZRA-User-VM-Admin', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Operator', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-VM-ZRA-Admin', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-NewFm-ZRA-User-VM-Admin', '22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Operator', '22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-VM-ZRA-Admin', '22-GLB-IaaS-PaaS-PROD-MSDP-Outsite-ZRA-User-VM-Admin', '22-GLB-IaaS-PaaS-PROD-MSDP-CUSTOMER-IN-ZRA-User-VM-Admin']
['11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator', '11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator']
推荐阅读
- mysql - MySql 设置计算列不起作用
- devops - Teams DevOps 连接器 - 客户端密码已过期
- node.js - bcrypt.comare 总是返回 false
- c# - 如何以编程方式在 Windows 8 和 Windows 10 桌面登录屏幕上显示状态栏?
- java - 将 Spark-BigQuery-Connector 与 Java 一起使用时面临的问题
- python - 无法使用 CS50 IDE 从我的 Web 应用程序向用户发送电子邮件
- angular - 按过滤器角度搜索特定列
- flutter - 如何将参数传递给flutter BLoc?
- python - Can you add a border to a cell in Jupyter Notebook which remains after output is rendered?
- html-email - mj-table 中内容的巨大差距