У меня есть функция, которая принимает ключевое слово в качестве ввода и возвращает список связанных ключевых слов. Мне нужна функция, которая будет получать связанные ключевые слова, а затем снова запускается по каждому ключевому слову в возвращаемом списке и т. Д. Для определенного количества раз.Применить функцию к каждому элементу рекурсии списка
def find_related(kw):
#magic happens
return related_kws
'''
Example:
>>>find_related('eat')
{
'base_kw': 'eat'
'related_kws': ['eat pasta', 'eat meat', 'eat fish']
}
'''
Что мне нужно что-то вроде этого:
def difficult_function(kw, cycles):
#cycles determines number of times to run recursion
#magic beyond my league happens...
return more_related_keywords
'''
EXAMPLE #1
>>>difficult_function('eat', 2)
{
'base_kw': 'eat'
'related_kws': {
'eat pasta': ['eat cold pasta', 'eat italian pasta', 'eat instant pasta'],
'eat meat': ['eat raw meat', 'eat cow meat', 'eat roasted meat'],
'eat fish': ['eat raw fish', 'eat rotten fish', 'eat fresh fish']
}
}
'''
'''
EXAMPLE #2
>>>difficult_function('eat', 3)
{
'base_kw': 'eat'
'related_kws': {
'eat pasta': {
'eat cold pasta': [
'eat cold pasta with sauce',
'eat cold pasta and wine',
'eat cold pasta at night'
],
'eat italian pasta': [
'eat italian cheap pasta',
'eat best italian pasta',
'eat italian pasta and pesto'
],
'eat instant pasta': [
'eat instant pasta snack',
'eat instant cheese pasta',
'eat healthy instant pasta'
]
},
'eat meat': {
'eat raw meat': [
'eat raw meat dangerous',
'eat raw chicken meat',
'eat raw meat with lemon'
],
'eat cow meat': [
'eat cow meat and salad',
'eat cow meat and rice,
'eat cow meat benefits'
],
'eat roasted meat': [
'eat roasted meat sandwich',
'eat cold roasted meat',
'don\'t eat roasted meat'
]
},
'eat fish': {
'eat raw fish': [
'eat raw fish sushi',
'eat raw fish health', 'eat raw fish japanese'],
'eat rotten fish': [
'eat rotten fish bacteria',
'eat rotten fish death',
'eat rotten fish stomach'
],
'eat fresh fish': [
'eat fresh fish restaurant',
'eat fresh fish with lemon',
'eat fresh fish at home']
}
}
}
'''
Я знаю, что я должен здесь поделиться, что я уже пробовал, но на самом деле, я даже не знаю, с чего начать. Есть идеи?
РЕДАКТИРОВАТЬ:
Функция ниже имитирует функционирование find_related (кВт). Мои извинения, если этот вопрос не представлены в подходе щего пути, я полный нуб
import string
import random
def find_related(kw):
# A lot of magic happens, the list comprehension
# below simulates the magic
related_kws = [
kw + ' ' + ''.join(
random.choice(string.ascii_lowercase) for
_ in range(4)) for i in range(3)
]
results = {
'base_kw': kw,
'related_kws': related_kws
}
return results
Mock функцию, которая соответствует примерам, приведенным.
def find_related(kw):
'''mock function'''
# A lot of magic happens, this simulates the magic
d = {'eat': ['eat pasta', 'eat meat', 'eat fish'],
'eat pasta': ['eat cold pasta', 'eat italian pasta', 'eat instant pasta'],
'eat meat': ['eat raw meat', 'eat cow meat', 'eat roasted meat'],
'eat fish': ['eat raw fish', 'eat rotten fish', 'eat fresh fish'],
'eat cold pasta': ['eat cold pasta with sauce', 'eat cold pasta and wine', 'eat cold pasta at night'],
'eat italian pasta': ['eat italian cheap pasta', 'eat best italian pasta', 'eat italian pasta and pesto'],
'eat instant pasta': ['eat instant pasta snack', 'eat instant cheese pasta', 'eat healthy instant pasta'],
'eat raw meat': ['eat raw meat dangerous', 'eat raw chicken meat', 'eat raw meat with lemon'],
'eat cow meat': ['eat cow meat and salad', 'eat cow meat and rice', 'eat cow meat benefits'],
'eat roasted meat': ['eat roasted meat sandwich', 'eat cold roasted meat', 'don\'t eat roasted meat'],
'eat raw fish': ['eat raw fish sushi', 'eat raw fish health', 'eat raw fish japanese'],
'eat rotten fish': ['eat rotten fish bacteria', 'eat rotten fish death', 'eat rotten fish stomach'],
'eat fresh fish': ['eat fresh fish restaurant', 'eat fresh fish with lemon', 'eat fresh fish at home']
}
results = {
'base_kw': kw,
'related_kws': d[kw]
}
Я думаю, нам понадобится более полная спецификация проблемы, чтобы привести вас к решению. Откуда берутся добавленные слова? Должна быть ссылка [«холодная», «итальянская», «мгновенная»] где-нибудь, информация, где требуется вставка, и т. Д. – Prune
Спасибо за ответ. Это довольно большой скрипт, который определяет, какие связанные ключевые слова, основанные на очистке, внутренней базе данных и т. Д. В принципе, вы передаете ей kw, и он вернет список связанных kws. Я редактирую вопрос, чтобы добавить функцию, которая имитирует поведение моей текущей функции. – galatron
Кроме того, полное отсутствие кода подразумевает, что вы не знаете, как выполнять итерацию через свои структуры данных, манипулировать строками и т. Д. Это не помогает ваше дело для получения помощи. – Prune