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
的子串。
发布于 2018-05-31 08:51:44
我不得不从你的代码中假设了很多,因为我不太理解你的描述。听起来您只想匹配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)
希望这能有所帮助。
https://stackoverflow.com/questions/50614980
复制相似问题