сортировать список подстрок в зависимости от их положения в строке - PullRequest
0 голосов
/ 04 мая 2020

a хотел бы отсортировать список подстрок (желательно в одну строку), например ['black red', 'matt black']

, на основе их положения в строке, например 'Example text matt black red etc'

Результат должен быть ['matt black', 'black red'], просто потому что 'matt black' стоит перед строкой. Как я могу сделать в одной строке?

Спасибо

1 Ответ

2 голосов
/ 04 мая 2020

Просто используйте индекс подстроки в тексте в качестве ключа сортировки:

data = ['black red', 'matt black']
text = 'Example text matt black red etc'
out = list(sorted(data, key=lambda item: text.index(item)))

print(out)
# ['matt black', 'black red']

Обратите внимание, что если одна из подстрок не может быть найдена в тексте, вы получите ValueError: substring not found исключение.

...