Проверка, является ли пара строк подстрокой в ​​сжатом списке - python - PullRequest
0 голосов
/ 31 мая 2018
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.Тем не менее, я должен быть в состоянии сделать это одновременно (дважды за один раз) для всего почтового индекса.

Пример:

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,s) в (b_list, s_list) совпадает с (approved_b,approved_s) и что b может быть подстрокой approved_b, а approved_b можетбыть подстрокой b в то же время , s может быть подстрокой approved_s, а approved_s может быть подстрокой s.

1 Ответ

0 голосов
/ 31 мая 2018

Мне нужно многое понять из вашего кода, потому что я не совсем следую вашим описаниям.Звучит так, будто вы хотите соответствовать только целому слову в списках approved, поэтому вы можете использовать in в split() каждой записи, например:

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)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...