检查一对字符串是不是是压缩列表的子字符串 - python
Posted
技术标签:
【中文标题】检查一对字符串是不是是压缩列表的子字符串 - python【英文标题】:Checking if a pair of strings are a substring of a zipped list - python检查一对字符串是否是压缩列表的子字符串 - python 【发布时间】:2018-11-09 22:00:06 【问题描述】: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)
问题是这样的:
如果你有alpha
,它需要识别alpha
等价于alpha 1
、alpha 100
、zoom alpha
等,这可以通过x in y
来完成。
但是,我需要能够同时(一次两次)完成整个 zip。
例子:
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']
结果需要是:
br=['alpha','gamma']
sr=['gary','lime']
所以基本上,当它通过验证时,它需要检查(b_list, s_list)
中的(b,s)
对是否与(approved_b,approved_s)
匹配,并且b
可以是approved_b
的子字符串,approved_b
可以是b
的子字符串同时,s
可以是approved_s
的子字符串,approved_s
可以是s
的子字符串。
【问题讨论】:
您的要求并不完全清楚。但是,如果您可以使用仅处理b
值的 x in y
向我们展示您的代码,那么应该很容易向您展示如何更改它以处理 zip(b, s)
值。
为什么ohm, apple
没有出现在输出中,因为"ohm" in "ohm" and "apple" in "appler" == True
?注意:b in approved_b and approved_b in b => b == approved_b
- 我不确定你的意思。
此时,我认为“apple”中的“apple”不应该返回true。所以它应该只在“apple”+一些其他东西(如“apple SDGSD”)时返回true。但无论哪种方式都可以。
b= alpha,approved_b= alpha 1 因此,approved_b 中的 b 将返回 true。
但我需要检查 zip 的两个内容。另外,我需要能够检查 b 中的approved_b 是否也返回true(或不返回)
【参考方案1】:
我不得不从您的代码中做出很多假设,因为我并没有完全遵循您的描述。听起来您只想匹配approved
列表中的整个单词,因此您可以在每个条目的split()
上使用in
,例如:
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')
在更长的时间里,这将是:
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)
希望这会有所帮助。
【讨论】:
看起来像我要找的东西。我仍在处理数据以检查它是否正常工作。泰! 您可能希望将已批准的列表预先拆分为单词集,因为使用一组列表会显着提高性能。以上是关于检查一对字符串是不是是压缩列表的子字符串 - python的主要内容,如果未能解决你的问题,请参考以下文章
如何检查字符串是不是包含 JavaScript 中的子字符串?
如何检查字符串是不是包含 JavaScript 中的子字符串?