2017-02-09 8 views
0

こんにちは、ここではPythonの新しいので、最近私はコード化する方法を学んでいた、この問題に遭遇しました。リストを最高から最低の順にソート

myfile = open('Results.txt') 
    title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('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} {4:20}'.format(item[0], item[1], item[2], item[3],point) 
      print(result) 

私はファイルが与えられているので、リストをポイント順にソートすると仮定します。ポイントを計算するには、マッチした金額* 3を行い、上から下へソートされた名前リストなどを印刷する必要があります。ここにリストがあります。

  • 1)Leeri、19,7,12
  • 2)Jenker、19,8,11
  • 3)Tieer、19,0,19
  • 5)ベビーボス、19、 7,12

  • 6)Gamered、19,5,14

  • 7)Dogman、19,3,16

  • 8)のHarロック、19,6,13

  • 9)ビリーズ、19,7,12

あなたはそれをどのように行うのですか?ソートアルゴリズムのようなものが必要ですか?

+0

何を試しましたか?あなたはGoogleの "python sort"でしたか?もしそうなら、あなたは何を試しましたか、そしてあなたはどこにいるのですか? – Tchotchke

+0

私はgoogleをやったが、私は完全にどのようにソートはPythonで動作しないコードを私は理解して読んだ。 –

答えて

0

私はこのようなものだろう:

scores = [] 
myfile = open('Results.txt') 
for line in myfile: 
    scores.append(line.split(',')) 

sortedScores = sorted(scores,key=lambda x: x[2]*3) 

これはlistlistを作成しますが(あなたがそれを呼ばれると、各サブリストはitemです) 3番目の要素でソートします。つまり、合計の勝ちです。

注:
key=lambda x: x[2]*3は、ソート基準を指定するためにsortedに与えられたパラメータです。 scoresの各項目については、lambda関数が呼び出されます。
項目はlistで、3番目の要素に3を掛けた値、つまりソートする値を返します。

1

それは実際にはかなり簡単:

f = open("Results.txt") 
title = ("{:20}" * 5).format(
    "Nickname", 
    "Matches Played", 
    "Matches Won", 
    "Matches Lost", 
    "Points" 
) 
print(title) 
lines = [i.rstrip().split(',') for i in f] # this is a generator expression 
f.close() 
lines.sort(reverse=True, key=lambda x: int(x[2]) * 3) # sorts the list 
# reverse = reversed order. Python normally sorts from small to high. 
print("\n".join('{:20}' * 5).format(*(i + [int(x[2]) * 3]))) 
# f(*l) calls f with l as its arguments 
# (note the plural. so f(*[1, 2, 3]) is the same as f(1, 2, 3)) 
# list1 + list2 concatenates them. 
+2

私は少し説明がここに長い道のりを行くと思う... –

+1

@PatrickHaughそれを追加しました。 – CodenameLambda

+0

助けてくれてありがとう私は明らかに私が理解できるようにもっと学習をする必要があることを恐れています。コピーして貼り付けるだけではなく、私は学ぶ必要があります。 –

関連する問題