Python:在字典中搜索字典的函数

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,

我有个问题是这样的

为函数findActor编写契约、docstring和实现,该函数接受电影标题和角色名称,并返回在给定电影中扮演给定角色的演员。如果找不到给定的电影或角色,它将打印错误消息并返回空字符串

我已经完成了以下功能,这些功能将有助于完成此操作。myIMDb是一个全局字典,设置为空dic开始

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。不过,我发现,这只是我的一个愚蠢的制表错误。谢谢你的帮助!不过,这些角色在数据库中不是通常列为不同的角色吗,比如“成人迈克”和“儿童迈克”?