首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下面提到的情况下,如何有效地比较两个列表中的字符串:

在下面提到的情况下,如何有效地比较两个列表中的字符串:
EN

Stack Overflow用户
提问于 2021-04-19 22:37:09
回答 2查看 54关注 0票数 1
代码语言:javascript
复制
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_codes创建2个列表,通过将t_names的每个元素与t_codes的每个元素进行匹配来创建-

列表1是

代码语言:javascript
复制
["11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator" , "11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator"] 

此列表包含不包含t_names中提到的任何字符串的所有元素

列表2是

代码语言:javascript
复制
["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字符串。

我尝试的是:

代码语言:javascript
复制
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)

由于显而易见的原因,这并没有给我提供预期的输出。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-19 22:46:10

国际海事组织你要找的是any(...)

代码语言:javascript
复制
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)

对于给定的输入,这会产生以下结果:

代码语言:javascript
复制
['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']
票数 1
EN

Stack Overflow用户

发布于 2021-04-19 22:43:10

您应该将列表转换为set类型。set类型本身就有这种操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67164060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档