我希望按每個元組中的第一個值對列表進行排序,但是我的代碼不會生成任何實際的排序列表,儘管列表的順序確實發生了變化。我的列表包含的元組的值爲'PlayerCode',這是每個玩家的唯一鍵。而「平均點數」是玩家每場比賽得分的平均值。我希望按照「平均分數」對這份名單進行分類,儘管我似乎無法做到。這裏是我的代碼對第一個值的元組列表進行排序
def getKey(item):
return item[0]
def sortByPoints():
foundPlayers = []
with open ('PlayerList.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
foundPlayers.append((row['Average PTS'], row['PlayerCode']))
print(foundPlayers)
sortedPlayers = sorted(foundPlayers, key = getKey)
print (sortedPlayers)
就像我說的,這確實改變了列表的順序,但沒有辦法即時尋找,我也不能看到任何真正的模式,它已經將其改爲到。 我使用蟒3.4
這裏是兩個列表
未排序的輸出: [( '7', '1'),( '8', '2'),( '4' ('10','4'),('0','5'),('18','6'),('10','7'), ('''','8'),('10','9'),('2','10'),('4','11'), ('0','5'),('4','14'),('2','15')]
排序: [ ('10','9'),('18','6'),('2','10'),('2','12'), ('4','3'),('4','4'),('4','3'),('4','3'), ('8','2'),('9','8')]
請注意,按第一個v alue是元組的**默認排序**。除此之外,沒有[mcve],目前還不清楚你的問題是什麼。 – jonrsharpe
你想根據整數值進行排序,它們現在是字符串,所以你可以改變getKey函數來返回int(item [0]) – chatton
如果你真的想要,你可以使用字符串,只需排序使用'float' - 參見http://stackoverflow.com/a/17474264/2178980(實際上,上面的評論也可以做到這一點) – Eugene