Представь, что у тебя есть человек. Его полное имя - Роберт Джек Старший. Я пытаюсь создать сценарий поиска, используя только полезные комбинации его имени в логическом порядке.
Это означает, что сначала я попытаюсь выполнить поиск с Робертом Джеком-старшим, затем с Робертом-старшим, затем с Робертом Джеком и Робертом. Это самый логичный порядок на мой взгляд. Если вы думаете иначе, дайте мне знать!
Пока я выяснил, как получить все уникальные комбинации. Однако, по моему мнению, сценарий займет много времени для поиска всех комбинаций, даже если это имеет более высокую точность.
Поэтому мой вопрос: как я могу исключить все ненужные комбинации и расположить их в логическом порядке и сделать Вы согласны с тем, что я удаляю комбинации?
Причина, по которой я спрашиваю это, состоит в том, что полное имя также может состоять только из имени и фамилии. Так что без второго имени. Код должен соответствовать этим вариациям. К сожалению, я пока не мог придумать решение.
Мой код:
from itertools import chain, combinations
fname = 'Robert Jack Senior'
fname = fname.split(' ')
all_subsets = list(chain(*map(lambda x: combinations(fname, x), range(1, len(fname) + 1))))
all_subsets = [' '.join(subset) for subset in all_subsets]
print(all_subsets)
Вывод:
['Robert', 'Jack', 'Senior', 'Robert Jack', 'Robert Senior', 'Jack Senior', 'Robert Jack Senior']
Как обсуждалось до желаемого вывода (опять же, в мое мнение) будет:
['Robert Jack Senior', 'Robert Senior', 'Robert Jack', 'Robert']