2015-06-23 77 views
-2

我一直遇到麻煩結合到不同的列表 我試圖獲得一個名單和一個分數列表,同時採取名稱顯示的前n名學生分數。我如何鏈接兩個列表

我也不能確定在何處放置返回功能在它

+2

顯示的代碼,好嗎? –

+2

此問題目前無法解答。至少請提供示例輸入和預期輸出。如果你有,也請顯示你到目前爲止嘗試過的。 – 5gon12eder

+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)) 

現在,所有你需要做的是讓字典在某種排序的狀態。有一個bajillion如何排序一個字典,瞭解哪些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,這是值得我們學習對自己)

+0

我認爲你的最後一個鏈接應該引用python 3.x文檔不是2.x. –

+0

@ChristopherPearson啊,不妨。固定。 –

+0

抱歉挑選。 –