#python
#python
Вопрос:
У меня есть функция, которая возвращает список строк, которые сравниваются друг с другом, и оценку для каждого наблюдения. Я пытаюсь отфильтровать выходные данные по баллам, которые больше или равны 80. Когда я применил .фильтр возвращал список значений true или false, когда я хотел получить список строк со счетом 80 или более.
#Assign your list1
Test_addrs = my_list1
#Assign your List2 and build the nested loop
target_addr = my_list2
for addr in Test_addrs:
for target in target_addr:
distance = string_match(target, addr, ratio_calc = True)
#write results to a txt file
mylist.append(f'{target}, {addr}, {distance}')
Комментарии:
1. Я не понимаю, какое отношение приведенный вами код имеет к тексту. Нет функции, нет оценки и нет фильтра.
2. Итак, у вас есть два списка: список строк и список оценок?
3. @mkrieger1 Функция гигантская, поэтому для простоты я ее опустил. Я показываю код, в котором я вызываю функцию, и добавляю его в список. Я отредактирую сообщение, хотя, если это поможет с контекстом.
4. @Austin Это правильно
Ответ №1:
Использовать zip()
со списком-понимание:
strings_lst = ['a', 's', 'd', 'f', 'g']
scores_lst = [21, 24, 90, 54, 109]
print([x for x, y in zip(strings_lst, scores_lst) if y >= 80])
# ['d', 'g']
Комментарии:
1. Идеальный. Это именно то, над чем я работал и пытался разобраться.
2. В следующий раз предоставьте нам входные данные, ожидаемый результат и правильный код, применимый к тому, что вы объясняете. Это позволяет избежать дальнейших запросов в комментариях.