首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中合并两个列表

在Python中合并两个列表
EN

Stack Overflow用户
提问于 2014-01-14 07:38:59
回答 4查看 148关注 0票数 1

嗨,我的大学的一个项目,我想从一个网站上获得排名前n的元素。

我设法得到了收视率和元素的标题与美丽的汤。现在我有两个列表:一个是标题,另一个是收视率。它们看起来像这样:收视率

代码语言:javascript
复制
  [4.4, 3.5, 5.0 , 1.5]

标题

代码语言:javascript
复制
  ['Title1','Title2','Title3','Title4']

排名顺序与标题顺序一致。如何合并这两个列表以获得排名前n的元素?

EN

回答 4

Stack Overflow用户

发布于 2014-01-14 07:41:44

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
[(5.0, 'Title3'), (4.4, 'Title1'), (3.5, 'Title2'), (1.5, 'Title4')]

现在,您可以将输出(zipped)分割为您想要的内容,以获得顶部-您想要的许多标题。例如,如果您想要前两个元素(但只想要标题,不想要评级):

代码语言:javascript
复制
n = 2
result = [item[1] for item in zipped[:n]]
print(result)

输出:

代码语言:javascript
复制
['Title3', 'Title1']
票数 3
EN

Stack Overflow用户

发布于 2014-01-14 07:50:37

代码语言:javascript
复制
>>> 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')]
票数 1
EN

Stack Overflow用户

发布于 2014-01-14 07:43:29

代码语言:javascript
复制
>>> 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']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21103526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档