2017-03-14 11 views
0

私はこの形式でリストを持っている:第一名、姓、勝利、損失ソート整数に最低

アレックス、KOP、5,6-

derex、モップ、0、ホット11台の

SAS、11,0

豊かな、ジョン、2,9

ジェレミー、杖、1,10

私のプログラムでは、テキストファイルからのデータをリーダボードに表示します。リーダボードには少なくとも1回の試合で優勝したプレイヤーのみが表示され、勝ち数に3を掛けてポイントが計算されます。

def points(): 

template = "|{0:<30}|{1:<30}|{2:<30}|{3:<30}|{4:<30}" 
header = template.format("1st name: ","2nd Name: ", "won: ", "lost: ","points: ") 

print(header) 

with open(r'prac2.txt', 'r') as file: 

    for line in file: 

     data = line.strip().split(',') 

     if int(data[2]) >= 1: 

      points = int(data[2]) * 3 

      data.append(points) 

      print(template.format(*data),'\n') 

リーダーボードを最高額から最低額まで並べ替えることはできますが、どうすればいいのか分かりません。

答えて

1

あなたはカスタムキー機能を持つ組み込みsortedを使用することができます。

sorted(players, key=lambda player: player.wins * 3 + player.draws) 

PS:それらが発生することができます場合は、保存する必要があり、描画;

+0

は '以来、常にsorted'' list'を返します)すべての値を知る必要があります。それを 'list'で囲む必要はありません。 –

+0

ここは間違いです。マップ、フィルター、... – Sekuraz

関連する問題