我如何传递每把钥匙来检查里面是否有东西

2024-09-26 22:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,需要一些字典函数方面的帮助。你知道吗

我有一个演员和电影的文本文件,它看起来像这样:

Brad Pitt, Sleepers, Troy, Meet Joe Black, Oceans Eleven, Seven, Mr & Mrs Smith
Tom Hanks, You have got mail, Apollo 13, Sleepless in Seattle, Catch Me If You Can
Meg Ryan, You have got mail, Sleepless in Seattle
Diane Kruger, Troy, National Treasure
Dustin Hoffman, Sleepers, The Lost City
...

字典的顺序是一套一套,电影是关键,演员是价值观。你知道吗

我输入的是一个演员的名字,我想检查一下他为谁演的电影,谁是和他一起演的演员。。我怎么查这个?你知道吗

我试着这样做:

actor = raw_input().lower()
coList = movieDict.keys()
coSet = set()
for keys in range(len(coList)):
    for i in coList:
        if actor == i:
            continue
        else:
            coSet.add(actor)
print (', '.join(coSet()))

但它不起作用。。你知道吗

输出需要如下所示:

Brad Pitt
The actor's co-stars are:
Angelina Jolie, Anthony Hopkins, Diane Kruger, Dustin Hoffman, George Clooney, Julia Roberts, Kevin Bacon,
Morgan Freeman

Tags: inyou字典电影havemailactorgot
3条回答

如果我明白你想做什么。翻阅一本{movie: set(actors)}字典,你会发现一个演员的所有合作者都是你想要的。我假设已经构建了movieDict。你知道吗

我不知道你的外循环打算做什么for keys in range(len(coList)):似乎完全多余。你知道吗

简化:

actor = input().lower()   # raw_input() in Py2
coSet = set()
for movie, actors in movieDict.items():
    if actor in actors:
        coSet |= actors
print(', '.join(coSet))

这个coSet将包括原始的actor,但是如果必要的话可以简单地removed。你知道吗

如果你想找演员看他们演过的电影,也许更好的办法是让演员成为关键,让电影成为他们的价值观。也就是说,我搜索

"Brad Pitt" 

找回他的价值观,也就是电影

"Sleepers, Troy, Meet Joe Black, Oceans Eleven, Seven, Mr & Mrs Smith"

假设您的输入文件看起来与所发布的摘录相似,并且您拥有该模式

'ACTOR', 'movie1', 'movie2', etc...

您可以逐行遍历文件,并将每一行视为一个列表,其中列表的第一个索引,即第[0]行是Actor/键。行中的其他所有内容都作为单个列表传入,作为该键的值。你知道吗

然后,您还可以搜索特定的值,并让它们返回键以查找共同星。你知道吗

我想这就是你想做的。这是正确的理解吗?如果这是你要找的,我很乐意把代码作为一个起点。你知道吗

这将找到所有的电影演员已经在电影中,并把它放在电影集,然后迭代通过这一套电影,并创建一套演员在这些动作。这组演员代表了与给定演员合作的每一个演员。最后,原来的演员被从一组演员中除名。你知道吗

actor = raw_input().lower()
movies = set()
costars = set()
for key, value in movieDict.items():
  if actor in value:
    movies = movies.union(set([key]))

for movie in movies:
    costars = costars.union(movieDict[movie])

costars = costars.difference(set([actor]))

相关问题 更多 >

    热门问题