如何链接两个列表

时间:2015-06-23 01:36:46

标签: python list python-3.x

我在组合不同的列表时遇到了麻烦 我正在尝试获取名单和分数列表,同时将前n名学生的分数与显示的名称进行比较。

我也不确定将返回功能放在哪里

1 个答案:

答案 0 :(得分:2)

我假设你有一些看起来像这样的数据:

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}

我们可以通过几种不同的方式做到这一点,但zip无论如何都至关重要。最容易理解的可能是使用字典理解。

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

更紧凑,但可能更难理解,正在使用dict构造函数

name_score_dict = dict(zip(names, scores))

现在你所要做的就是让字典处于某种排序状态。 Stack Overflow上有关于如何对字典进行排序的大量不同问题,I will leave you to read了解我为什么做的事情有道理,但是:

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,这值得自学)