我希望按每个元组中的第一个值对列表进行排序,但是我的代码不会生成任何实际的排序列表,尽管列表的顺序确实发生了变化。我的列表包含的元组的值为'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