У меня есть вопрос, который идет как этотPython: Функция, которая осуществляет поиск по словарю в словаре
Написать контракт, строку документацию и реализацию функции findActor, которая берет название фильма и имя персонажа и возвращается актер/актриса, игравшая данного персонажа в данном фильме. Если данный фильм или данный символ не найден, он выводит сообщение об ошибке и возвращает пустую строку
Я уже выполнил следующие функции, которые помогут вам в этом. И myIMDb - это глобальный словарь, установленный на пустой пуск, чтобы начать
def addMovie (title, charList, actList):
"""The function addMovie takes a title of the movie, a list of characters,
and a list of actors. (The order of characters and actors match one
another.) The function addMovie adds a pair to myIMDb. The key is the title
of the movie while the value is a dictionary that matches characters to
actors"""
dict2 = {}
for i in range (0, len(charList)):
dict2 [charList[i]] = actList[i]
myIMDb[len(myIMDb)] = {title: dict2}
return myIMDb
def listMovies():
"""returns a list of titles of all the movies in the global variable myIMDb"""
titles = []
for i in range (len(myIMDb)):
titles.append((list(myIMDb[i].keys())))
return titles
Вот где у меня проблемы. Когда я хочу написать функцию findActor, мне нечего возвращать. Я не закончил с функцией, но я думаю, что сделал что-то принципиально неправильное. Я чувствую, что иду по неправильной дороге, и я становлюсь все более и более потерянным, чем больше пишу. Вот что у меня есть. Будут оценены любые предложения о том, как направить этот тонущий корабль.
def findActor(title, name):
myIMDb = {}
for i in range (len(myIMDb)):
if title == myIMDb[i].keys():
if name == myIMDb[i].get(name):
return myIMDb[i].get(name)
else:
return "Error: No Movie found"
Я заселял myIMDb, я просто забыл сказать, что был. Я также сделал то, что вы предложили. И он сбросил мою функцию «listMovies», и я все равно получаю тот же самый пробник с моим findActor. Он ничего не возвращает, независимо от того, что я ввел в параметры. – Jonerhan
Хм, не возвращая ничего, что вы имеете в виду, он просто ничего не возвращает или он возвращает ошибку? В вашем исходном коде, так как вы также инициализировали 'myIMDb' локально в пустой словарь, когда вы проходите через него, вы просто ничего не делаете, потому что в словаре нет ничего. Убедитесь, что вы используете глобальный myIMDb вместо локального пустого. – Penguinator
Nevermind, я понял, это была просто тупая ошибка с моей стороны. Спасибо за вашу помощь! – Jonerhan