2024-04-25 14:36:40 发布
网友
我在合并不同的列表时遇到了困难 我试着得到一个名单和一个分数表,同时把前n名学生的分数和名单一起显示出来。你知道吗
我也不确定把返回函数放在哪里
我假设你有如下数据:
names = ['Alice', 'Bob', "Charlie", "David", "Eve"] scores = [1, 2, 3, 4, 5]
您正在尝试获取按分数排序的最前面的n(为了方便使用,我们将使用n=2)名称。有很多方法可以做到这一点,最简单的方法是使用字典。我们希望最终得到:
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元组。你知道吗
name, score
for name,score in sorted_d[:n]: print("Name is {} and score is {}".format(name, score))
(这也使用了string formatting,这本身就值得学习)
我假设你有如下数据:
您正在尝试获取按分数排序的最前面的
n
(为了方便使用,我们将使用n=2
)名称。有很多方法可以做到这一点,最简单的方法是使用字典。我们希望最终得到:我们可以用几种不同的方法来实现,但是^{} 是至关重要的。最容易理解的可能是使用听写理解。你知道吗
使用^{} 构造函数更简洁,但可能更难理解
现在你所要做的就是让字典处于某种排序状态。堆栈溢出中有很多不同的问题,关于如何对字典排序,这有助于理解为什么我所做的是有意义的,但是:
这会给你一些类似的信息:
因此,切掉第一个
n
项以获得name, score
元组。你知道吗(这也使用了string formatting,这本身就值得学习)
相关问题 更多 >
编程相关推荐