我是python的新手。最近我遇到了一个问题,我想打印假冒游戏的排序排行榜。
这是我的代码:
myfile = open('Results.txt')
title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('Player Nickname','Matches Played','Matches Won','Matches Lost','Points')
print(title)
for line in myfile:
item = line.split(',')
points = int(item[2]) * 3
if points != 0:
result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(item[0], item[1], item[2], item[3].rstrip(), points)
print(result)
以下是文件中的一些示例
Leeroy,19,7,12
Jenkins,19,8,11
Tyler,19,0,19
我必须使用.rstrip()删除\ n转义代码,以便格式正常工作。
有没有真正简单的文件排序方法?而不是像lambda这样的东西,只是非常复杂的东西?
答案 0 :(得分:0)
sortedScores =已排序(得分,键= lambda x:x [2] * 3)
你快到了!你需要做的就是:
sortedScores = sorted(scores, key=lambda x: int(x[2])*3)
您在将数值乘以
之前忘记将其转换为整数这是一种方法 - 只需在读取文件时添加计算出的点,然后对结果进行排序并打印出来:
data = []
for line in myfile:
item = line.split(',')
points = int(item[2]) * 3
item.append(points)
data.append(item)
# Now, sort it, the easiest way is to tell it to sort by the last item
import operator
data = sorted(data, key=operator.itemgetter(4), reverse=True)
# or, you can write a lambda!
data = sorted(data, key=lambda x: x[4], reverse=True)
for item in data:
result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(*item)
print(result)