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

时间:2013-10-24 03:13:51

标签: python list search dictionary

我有一个像这样的问题

  

为函数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"

2 个答案:

答案 0 :(得分:1)

在使用之前,您需要在myIMDB填充findActor字典。

另外,我建议将myIMDB直接从移动标题映射到字符。换句话说,您应该myIMDb[len(myIMDb)] = {title: dict2}执行addMoive而不是myIMDb[title] = dict2 {/ 1}}。

这样,当你需要查找标题和角色时,你可以简单地做:

def findActor(title, name):
    if title in myIMDb:
        if name in myIMDb[title]:
            return myIMDb[title][name]
    return "Error: No movie found"

答案 1 :(得分:1)

首先要学习的是,使用任何语言编程,都是将任务减少到子任务。在这里,为什么不首先创建一个单个电影的角色和演员字典。如果你不能这样做,那么你将无法完成整个项目。

在你完成这项工作后,也许其他一切都将落实到位。

警告:在现实世界中,偶尔会有一个以上的角色扮演一个角色 - 例如 - 一个孩子长大成人的角色。但这可能不在您的规范中。