2016-03-20 12 views
1

私は、ディレクトリ内のすべてのファイルの平均を探し出し、リストに保存してから平均値で並べ替えるコードを書いています。例えば、ファイルのリストである[ '私'、 'あなた'、 '彼'、 '彼女']リストの中で最も高い平均でソートする

とスコアリストである[ '4.67'、 '5.33'、 '6.33'、 '5.33']

student_average_list ['私:4.67'、 'あなた:5.33'、 'him:6.33'、 'her:5.33']となる

です。

[him:6.33]、[you:5.33]、[him:5.33]、[me:4.67]]になるように並べ替えたいです。

構文エラーはなく、誤った並べ替えだけです。すべてのおかげで、私は

import operator 
results = zip(files, map(float, scores)) 
results = sorted(results, key=operator.itemgetter(1), reverse=True) 
student_average_list = ["{}: {:.2f}".format(x, y) for x, y in results] 
print(student_average_list) 

を使用すると、文字列に変換する前にソートされたリストを作成する方法を

for x, y in zip(files, scores): 
    student_result = (x + ": " + y) 
    student_average_list.append(student_result) 

student_average_list.sort(key=lambda x: float(x[-1]), reverse=True) 
print(student_average_list) 

に代わる

def sort_average(): 
    scores = [] 
    student_average_list = [] 
    for file in os.listdir(path): 
     file = os.path.join(path, file) 
     if os.path.isfile(file): 
      with open(file, 'r') as txt_file: 
       data = [float(line.rstrip()) for line in txt_file] 
       average = (sum(data)/len(data)) 
       average = ("{0:.2f}".format(average)) 
       scores.append(str(average)) 

    for x, y in zip(files, scores): 
     student_result = (x + ": " + y) 
     student_average_list.append(student_result) 

    student_average_list.sort(key=lambda x: float(x[-1]), reverse=True) 
    print(student_average_list) 

答えて

1

を助けます。それははるかに簡単になります。
スコアを途中の文字列に変換する必要はありません。それは無駄です。

+0

多くのおかげで、今働いています – Eric1108

関連する問題