2024-04-26 12:10:13 发布
网友
嗨,对于我大学的一个项目,我想从网站上获得排名前n的元素。你知道吗
我设法用beautifulsoup获得了这些元素的收视率和标题。 现在我有两个名单:一个是标题,一个是收视率。 它们看起来像这样: 评级
[4.4, 3.5, 5.0 , 1.5]
头衔
['Title1','Title2','Title3','Title4']
排名顺序与标题顺序一致。 如何合并这两个列表以获得排名前n的元素?你知道吗
>>> import heapq >>> A = [4.4, 3.5, 5.0 , 1.5] >>> B = ['Title1','Title2','Title3','Title4'] >>> heapq.nlargest(2, zip(A, B)) [(5.0, 'Title3'), (4.4, 'Title1')]
>>> ratings = [4.4, 3.5, 5.0 , 1.5] >>> titles = ['Title1','Title2','Title3','Title4'] >>> sorted(list(enumerate(titles)), key=lambda t:ratings[t[0]]) [(3, 'Title4'), (1, 'Title2'), (0, 'Title1'), (2, 'Title3')] >>> [t[1] for t in sorted(list(enumerate(titles)), key=lambda t:ratings[t[0]])] ['Title4', 'Title2', 'Title1', 'Title3']
lst1 = [4.4, 3.5, 5.0 , 1.5] lst2 = ['Title1','Title2','Title3','Title4'] zipped = list(zip(lst1, lst2)) # "merges" the lists zipped.sort(key=lambda x: x[0], reverse=True) # sorts by ratings, descending print(zipped)
输出:
[(5.0, 'Title3'), (4.4, 'Title1'), (3.5, 'Title2'), (1.5, 'Title4')]
现在,您可以将输出(zipped)切分到您的心底内容,以获得您想要的标题。例如,如果您需要前2个元素(但仅限于标题,而不是评级):
zipped
n = 2 result = [item[1] for item in zipped[:n]] print(result)
['Title3', 'Title1']
输出:
现在,您可以将输出(
zipped
)切分到您的心底内容,以获得您想要的标题。例如,如果您需要前2个元素(但仅限于标题,而不是评级):输出:
相关问题 更多 >
编程相关推荐