Python:在字典中搜索字典的函数
我有个问题是这样的 为函数findActor编写契约、docstring和实现,该函数接受电影标题和角色名称,并返回在给定电影中扮演给定角色的演员。如果找不到给定的电影或角色,它将打印错误消息并返回空字符串 我已经完成了以下功能,这些功能将有助于完成此操作。myIMDb是一个全局字典,设置为空dic开始Python:在字典中搜索字典的函数,python,list,search,dictionary,Python,List,Search,Dictionary,我有个问题是这样的 为函数findActor编写契约、docstring和实现,该函数接受电影标题和角色名称,并返回在给定电影中扮演给定角色的演员。如果找不到给定的电影或角色,它将打印错误消息并返回空字符串 我已经完成了以下功能,这些功能将有助于完成此操作。myIMDb是一个全局字典,设置为空dic开始 def addMovie (title, charList, actList): """The function addMovie takes a title of the movie,
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"
在使用
findActor
之前,您需要在myIMDB
字典中填充它
此外,我建议直接从移动到字符的标题映射myIMDB
。换句话说,在addMoive
中,您不应该执行myIMDb[len(myIMDb)]={title:dict2}
,而应该只执行myIMDb[title]=dict2
这样,当您需要查找标题和字符时,只需执行以下操作:
def findActor(title, name):
if title in myIMDb:
if name in myIMDb[title]:
return myIMDb[title][name]
return "Error: No movie found"
学习任何语言编程的第一件事是将任务简化为子任务。在这里,为什么不先为一部电影创建一个角色和演员的字典呢。如果你不能做到这一点,那么你将无法完成整个项目 在你完成这项工作之后,也许其他一切都会安排妥当
警告:在现实世界中,偶尔会有一个以上的演员扮演一个角色,例如,一个孩子长大成人的角色。但这可能不在您的规范中。我正在填充myIMDb,只是忘了说我是。我也照你的建议做了。它抛弃了我的“listMovies”功能,我的findActor仍然存在同样的问题。它不返回任何东西,不管我在参数中输入了什么。嗯,不返回任何东西,你的意思是它不返回任何东西,或者它返回了错误?在原始代码中,由于您也在本地将
myIMDb
初始化为一个空字典,因此在循环遍历它时,您将什么也不做,因为字典中没有任何内容。确保您使用的是全局myIMDb,而不是本地的空myIMDb。不过,我发现,这只是我的一个愚蠢的制表错误。谢谢你的帮助!不过,这些角色在数据库中不是通常列为不同的角色吗,比如“成人迈克”和“儿童迈克”?