检查一对字符串是否是压缩列表的子字符串-python
问题是: 如果您有检查一对字符串是否是压缩列表的子字符串-python,python,python-3.x,python-2.7,zip,substring,Python,Python 3.x,Python 2.7,Zip,Substring,问题是: 如果您有alpha,它需要认识到alpha相当于alpha 1、alpha 100、zoom alpha,等等。这可以通过y中的x来完成。 但是,我需要能够同时(一次两次)完成整个拉链 例如: b_list=["some data"] s_list=["some data"] approved_b=[list of "b_list" elements that are approved] approved_s=[list of "s_list" elements that are a
alpha
,它需要认识到alpha
相当于alpha 1
、alpha 100
、zoom alpha
,等等。这可以通过y中的x
来完成。
但是,我需要能够同时(一次两次)完成整个拉链
例如:
b_list=["some data"]
s_list=["some data"]
approved_b=[list of "b_list" elements that are approved]
approved_s=[list of "s_list" elements that are approved]
br, sr=[],[]
for b,s in zip(b_list, s_list):
if (b,s) in zip(approved_b, approved_s):
br.append(b)
sr.append(s)
结果必须是:
b_list=['alpha', 'beta time', 'gamma', 'ohm']
s_list=['gary', 'paul', 'lime', 'apple']
approved_b=['alpha 1', 'beta', 'gamma 2', 'ohm']
approved_s=['gary time', 'zoom', 'lime time', 'appler']
因此,基本上,在进行验证时,它需要检查
(b,s)
中的(b\u列表,s\u列表)
对是否与(approved\u b,approved\s)匹配
并且b
可以是approved\u b
的子字符串,approved\u b
可以同时是b
的子字符串,s
可以是approved\u s
的子串,approved\u s
可以是s
的子串,我不得不从你的代码中做出很多假设,因为我没有完全理解你的描述。听起来您只想在approved
列表中匹配整个单词,因此您可以在每个条目的split()
上使用in
,例如:
br=['alpha','gamma']
sr=['gary','lime']
从更长远的角度来看,这将是:
def match_pair(e1, e2, lst1, lst2):
return any(e1 in l1.split() and e2 in l2.split() for l1, l2 in zip(lst1, lst2))
In []:
br, sr = zip(*[(b, s) for b, s in zip(b_list, s_list)
if match_pair(b, s, approved_b, approved_s)])
print(br)
Out[]:
('alpha', 'gamma')
In []:
print(sr)
Out[]:
('gary', 'lime')
希望这能有所帮助。你的要求还不完全清楚。但是,如果您可以使用只处理
b
值的y中的x
向我们显示您的代码,那么应该很容易向您展示如何将其更改为处理zip(b,s)
值。为什么ohm,apple
不会出现在输出中,因为在“ohm”中的“ohm”和在“appler”中的“apple”==True
?注意:b在approved_b中,approved_b在b=>b==approved_b
-我不确定你的意思。在这一点上,我认为“appler”中的“apple”不应该返回true。因此,只有当“apple”+其他东西(比如“apple SDGSD”)时,它才应该返回true。但无论哪种方式都可以。b=alpha,approved_b=alpha 1,因此approved_b中的b将返回true。但我需要检查zip的两个内容。此外,我需要能够检查b中的approved_b是否也返回true(或not),这似乎是我正在寻找的。我仍在处理数据,以检查它是否正常工作。泰!您可能希望将已批准的列表预拆分为单词集,因为使用单词集列表将显著提高性能。
br, sr = [], []
for b, s in zip(b_list, s_list):
if match_pair(b, s, approved_b, approved_s):
br.append(b)
sr.append(s)