如何为列表中的 3 个最高值建立索引?

2024-02-17

所以我有这两个列表:

score = [350, 914, 569, 223, 947, 284, 567, 333, 697, 245, 227, 785, 120, 794, 343, 773, 293, 995]
name = [Ryan, Stacy, Jenna, Peter, Sophie, Bryan, Cole, Andrea, Emily, Blake, Mike, Stephan, Rob, Eliza, Heather, Daniel, Elisabeth, Samantha]

我必须找到 3 个最高分,并将这些分数与名单中各自的得分者进行统计,这样我才能得到新的名单

top3score = [947, 995, 914]
top3name = [Sophie, Samantha, Stacy]

我正在考虑对最高分数建立索引,将它们附加到列表中,而不是使用索引将这些分数与名称进行统计。

我的问题是如何索引列表中的 3 个最高值? 然后,我如何使用索引在姓名列表中查找记分员姓名,以便我可以将它们附加到 top3name 列表中?


我想这样就可以了

sorted(zip(score, name), reverse=True)[:3]

这样你就明白发生了什么:

zip http://docs.python.org/library/functions.html#zip: 将 iterables 作为参数,并从每个 iterables 中获取一个元素,将它们放入一个元组中。

So:

>>> zip(score, name)
[(350, 'Ryan'), (914, 'Stacy'), (569, 'Jenna'), (223, 'Peter'), (947, 'Sophie'), (284, 'Bryan'), (567, 'Cole'), (333, 'Andrea'), (697, 'Emily'), (245, 'Blake'), (227, 'Mike'), (785, 'Stephan'), (120, 'Rob'), (794, 'Eliza'), (343, 'Heather'), (773, 'Daniel'), (293, 'Elisabeth'), (995, 'Samantha')]

sorted http://docs.python.org/library/functions.html#sorted: 对数据进行排序。默认情况下,元组元素按照 0 索引中的元素进行排序,因此本例中的分数。 Reverse=True 将首先降序排序。

最后,[:3]是切片表示法,表示给我从开始到第三个元素的所有元素。这也可以写成[0:3]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为列表中的 3 个最高值建立索引? 的相关文章

随机推荐