如何链接两个列表

2024-04-25 14:36:40 发布

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

我在合并不同的列表时遇到了困难 我试着得到一个名单和一个分数表,同时把前n名学生的分数和名单一起显示出来。你知道吗

我也不确定把返回函数放在哪里


Tags: 函数列表学生分数名单
1条回答
网友
1楼 · 发布于 2024-04-25 14:36:40

我假设你有如下数据:

names = ['Alice', 'Bob', "Charlie", "David", "Eve"]
scores = [1, 2, 3, 4, 5]

您正在尝试获取按分数排序的最前面的n(为了方便使用,我们将使用n=2)名称。有很多方法可以做到这一点,最简单的方法是使用字典。我们希望最终得到:

name_score_dict = {"Alice": 1,
                   "Bob": 2,
                   "Charlie": 3,
                   "David": 4,
                   "Eve": 5}

我们可以用几种不同的方法来实现,但是^{}是至关重要的。最容易理解的可能是使用听写理解。你知道吗

name_score_dict = {name:score for name,score in zip(names, scores)}

使用^{}构造函数更简洁,但可能更难理解

name_score_dict = dict(zip(names, scores))

现在你所要做的就是让字典处于某种排序状态。堆栈溢出中有很多不同的问题,关于如何对字典排序,这有助于理解为什么我所做的是有意义的,但是:

sorted_d = sorted(name_score_dict.items(), key=lambda kv: kv[1], reverse=True)

这会给你一些类似的信息:

[("Eve", 5), ("David", 4), ("Charlie", 3), ("Bob", 2), ("Alice", 1)]

因此,切掉第一个n项以获得name, score元组。你知道吗

for name,score in sorted_d[:n]:
    print("Name is {} and score is {}".format(name, score))

(这也使用了string formatting,这本身就值得学习)

相关问题 更多 >