gpt4 book ai didi

python - 返回相似作者的列表

转载 作者:太空狗 更新时间:2023-10-30 02:53:59 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,它将从一个键返回一个键的项目列表(如果这有意义的话)。例如,这是作者和相似作者的字典。

authors = {
'Ray Bradbury': ['Harlan Ellison', 'Robert Heinlein', 'Isaac Asimov', 'Arthur Clarke'],
'Harlan Ellison': ['Neil Stephenson', 'Kurt Vonnegut', 'Richard Morgan', 'Douglas Adams'],
'Kurt Vonnegut': ['Terry Pratchett', 'Tom Robbins', 'Douglas Adams', 'Neil Stephenson', 'Jeff Vandemeer'],
'Thomas Pynchon': ['Isaac Asimov', 'Jorges Borges', 'Robert Heinlein'],
'Isaac Asimov': ['Stephen Baxter', 'Ray Bradbury', 'Arthur Clarke', 'Kurt Vonnegut', 'Neil Stephenson'],
'Douglas Adams': ['Terry Pratchett', 'Chris Moore', 'Kurt Vonnegut']
}

我想出的函数是这样的:

def get_similar(author_list, author):
for item in author_list[author]:
return author_list[author]

它只返回第一个键的项目。我希望它返回所有相似的作者,如下所示:

get_similar(authors, 'Harlan Ellison')

['Terry Pratchett', 'Tom Robbins', 'Douglas Adams', 'Neil Stephenson',
'Jeff Vandemeer','Terry Pratchett', 'Chris Moore', 'Kurt Vonnegut']

在找到给定键(作者)的地方,查看为该键列出的项目,然后返回这些键的项目。在这种情况下,Harlan Ellison 列出了四位作者——Neil Stephenson、Kurt Vonnegut、Richard Morgan 和 Douglas Adams。该函数然后查找这些作者,并返回为他们列出的项目 - Kurt Vonnegut 返回 Terry Pratchett、Tom Robbins、Douglas Adams、Neil Stephenson 和 Jeff Vandemeer,Douglas Adams 返回 Terry Pratchett、Chris Moore 和 Kurt Vonnegut,

重复没问题,我希望它按字母顺序排列(我假设你可以在最后使用 sort 命令)任何帮助将不胜感激,我很难过!

最佳答案

我想这就是您要找的。希望它能让你继续前进。

authors = {'Ray Bradbury': ['Harlan Ellison', 'Robert Heinlein', 'Isaac Asimov', 'Arthur Clarke'], 'Harlan Ellison': ['Neil Stephenson', 'Kurt Vonnegut', 'Richard Morgan', 'Douglas Adams'], 'Kurt Vonnegut': ['Terry Pratchett', 'Tom Robbins', 'Douglas Adams', 'Neil Stephenson', 'Jeff Vandemeer'], 'Thomas Pynchon': ['Isaac Asimov', 'Jorges Borges', 'Robert Heinlein'], 'Isaac Asimov': ['Stephen Baxter', 'Ray Bradbury', 'Arthur Clarke', 'Kurt  Vonnegut', 'Neil Stephenson'], 'Douglas Adams': ['Terry  Pratchett', 'Chris Moore', 'Kurt Vonnegut']}


def get_similar(authors, author):
retVal = []
for k, v in authors.items():
if k == author:
for value in v:
retVal.append(value)
if value in authors:
for v2 in authors[value]:
retVal.append(v2)
return sorted(retVal)

get_similar(authors, "Harlan Ellison") 返回['克里斯摩尔', '道格拉斯·亚当斯', '道格拉斯·亚当斯', '杰夫范德米尔', '库尔特冯内古特', '库尔特冯内古特', '尼尔斯蒂芬森', '尼尔斯蒂芬森', '理查德摩根', '特里普拉切特', '特里普拉切特', '汤姆罗宾斯']

我会留给您解决如何删除重复项的问题。

关于python - 返回相似作者的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com