我希望按每个元组中的第一个值对列表进行排序,但是我的代码不会生成任何真正排序的列表,尽管列表的顺序会发生变化。我的列表包含一个元组,它的值是“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)
就像我说的,这确实改变了列表的顺序,但并不是我所寻找的方式,我也看不到它改变了的任何真正的模式。 我使用的是python3.4
这是两个列表的输出
未排序: [('7','1'),('8','2'),('4','3'),('28','4'),('0','5'),('18','6'),('10','7'),('9','8'),('10','9'),('4','11'),('2','12'),('3','13'),('4','14'),('2','15')]
已排序: [('0','5'),('10','7'),('10','9'),('18','6'),('2','10'),('2','12'),('2','15'),('28','4'),('3','13'),('4','11'),('4','14'),('7','1'),('8','2'),('9','8')]
row['Average PTS']
和row['Player Code']
返回字符串。Python将用(可能)令人惊讶的结果来比较字符串使用}。在
int
转换row['Average PTS']
和{问题是你有字符串,所以它是按字母顺序排序的。转换为整数:
您可以使用从内置模块
operator
导入的itemgetter
示例代码:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐