テキストファイルには、次のように説明しQ:テキストファイル内のキーの値を最大から最小の順に並べる方法は? (のpython 2.7.11)は
Joe,Bloggs,[email protected],01269512355, 1 , 20, 0, 0, 0
fname, lname, email, number, ..., number i want to order ^, ...,...,..
テキストファイル:
Joe,Bloggs,[email protected],01269512355, 1,20, 0, 0, 0
Sarah,Brown,[email protected],01866522555, 1,25, 0, 0, 0
Andrew,Smith,[email protected],01899512785, 1,30, 0, 0, 0
Ray,Charles,[email protected],01268712321, 1,3, 0, 0, 0
Kevin,White,[email protected],01579122345, 1,0, 5, 0, 0
Samantha,Collins,[email protected],04269916257, 1,0, 0, 0, 0
目的を:私はその結果に基づいて、順番に鍵を置くことができるようにしたいです値[5]の。これは、私がトップ2のスコアリングと最低2つのスコアリングキーの値[4]を変更する必要があるので、値[4]を変更する方が簡単です。そのため、[4]最高の2値 - 1、最低のスコア値は、[4]のコードの後に+ 1
テキストファイルが実行された:私はこれまで持って
Andrew,Smith,[email protected],01899512785, 0,30, 0, 0, 0
Sarah,Brown,[email protected],01866522555, 0,25, 0, 0, 0
Joe,Bloggs,[email protected],01269512355, 1,20, 0, 0, 0
Kevin,White,[email protected],01579122345, 1,5, 0, 0, 0
Ray,Charles,[email protected],01268712321, 2,3, 0, 0, 0
Samantha,Collins,[email protected],04269916257, 2,0, 0, 0, 0
コード:
をf = open("players.txt", "r"
lines = []
for line in f.readlines():
line = [x.strip() for x in line.split(',')]
line[4] = int(line[4])
line[5] = int(line[5])
lines.append(line)
f.close()
values = sorted(list(set([l[4] for l in lines])),reverse=True)
max_values = (values[0], values[1])
for line in lines:
if line[5] in max_values:
line[4] += 1
else:
line[4] -= 1
with open("players.txt", "w") as f:
for line in lines:
line = [str(x) for x in line]
f.write(', '.join(line) + '\n')
これは私のコードであり、かなり複雑です。このエラーが発生するので、私が望むように動作していないようです。
max_values = (values[0], values[1])
IndexError: list index out of range
私のコードを完全に書き直して、より良いものにしてください。私はコーディングに新しいので、ほとんどのことを行う知識はまだありません。
あなたは分かりません。私はキーを値の大きいものから小さいものへと昇順に並べることを望んでいます[5]。私はそのリストのトップ2を、トップ2には値[4]を変更したい。 @プルーン – Toby
私は理解しています。しかし、あなたのキーは**値[5] **にあります。 **ソートされた**ステートメントは** values [4] **からキーを集めます。 – Prune
訂正していただきありがとうございます。今それはうまく動作します:) – Toby