Скажи, что у меня есть диктат, dict - это диктонарное число со значением
dict = {'**Leon**':{'Name':'Leon L','**follow**':['Apple', 'PPy','Jack','Tommy']},'**Jack**':{'name':'Jack Y','**follow**':['Apple','Cruise','Jay']},'**Tommy**':{'name':'Tommy T','**follow**':['Hill']},'**Apple**':{'name':'Apple A','**follow**':['Jack']},**'Cruise'**:{'name':'Cruise L','**follow**':['Jay']}}
**follow**
означает пользователей, за которыми следует этот пользователь, например:
Леон следует за Apple, PPy, Jack, Tommy
и у меня есть файл запроса, в котором есть задачи. Нам нужно выполнить задачу и вернуть список имен пользователей (имена пользователей - это ключи в dict, например, «Леон», «Джек», «Томми»), формат этого файла:
SEARCH
Leon
follow
follow-by # there might be many more follow, and follow-by
FILTER
name-include Leon
follow Apple # format: keyword follow, a space and a username. same apply to follow-by username
follow-by Leon # there might be more name-include, , follow username, follow by username
значение файла запроса:
ПОИСК и ФИЛЬТР являются ключевыми словами. Строка после SEARCH является начальным именем пользователя (нам нужно поместить его в список, давайте назовем список user_list). Поисковая спецификация имеет 2 шага (в данном случае):
- создайте список, в котором есть Леон, назовите этот список L1
- следовать говорит, чтобы заменить каждого человека р в L1 людьми, которые следуют за р, тогда мы получим L2
- follow-by говорит о замене каждого человека p в L2 людьми, за которыми следует p (люди, за которыми следует p, находятся в следующем списке в профиле пользователя). Тогда мы получим L3
Спецификация фильтра (в этом примере):
- для каждого человека p в L3, если имя p содержит «Leon», пользователь остается в списке. Затем мы получаем L4
- для каждого человека p в L4, если p следует за Apple, то p сохраняется в списке, мы получаем L5
- для каждого человека p в L5, если за p следует Леон, p сохраняется в списке. Тогда мы получаем наш окончательный список. Нам нужно вернуть окончательный список
Может кто-нибудь помочь мне написать программу, которая может выполнить задачу?