Reputation: 51
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"]
Above mentioned are my initial input lists.
I need to create 2 lists from t_codes by matching each element of t_names with each element of t_codes to create -
List 1 is
["11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator" , "11-XXX-Yaas-ZaaS-XXX-ZZZZ-VM-ZRA-Operator"]
This list contains all the elements which does not contain any strings mentioned in t_names
List 2 is
["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" ]
This list contains Outsite, NewFm, CUSTOMER-IN strings from t_names.
What I tried is:
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)
This is not giving me expected output for obvious reasons. Please help.
Upvotes: 1
Views: 118
Reputation: 43169
Imo, you're looking for 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)
This yields for your given input:
['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']
Upvotes: 1
Reputation: 3591
You should convert the lists to the set
type. The set
type has this sort of operation natively.
Upvotes: 0