2016-05-15 3 views
0

辞書の値を複数の数字で並べ替える方法はありますか?私はここで使用されたメソッドを試しました:How to sort a dictionary to print from highest value to lowest for each key?しかし、それは1桁の整数値のためだけに働きます。例えば、私のコードは、現在、次のようになります。複数の数字の辞書の値を高い順に並べ替える方法

学生は、このテキストファイルの.readlines()の結果であると私は第1のスコアを使用してい
for line in students: 
     student = line.split(' ') 
     d[student[1]] = (student[3]) 
     print (d) 
    od = sorted(d.items(), key=lambda x: x[1], reverse=True) 
    print(od) 

Name= kirsty Score= 9 10 10 ` 
Name= anne Score= 4 5 6 
Name= charlie Score= 1 1 1 
Name= bruce Score= 7 8 9 
Name= danny Score= 10 11 12 

ダニーがあるべき辞書の最初のエントリは、私の実際の出力はこれです:

[('kirsty', '9'), ('bruce', '7'), ('anne', '4'), ('danny', '10'), ('charlie', '1')] 

誰でも助けてください?

+0

試みる 'ラムダのx:int型(X [1])'キーをソートするように! – schwobaseggl

答えて

1

あなたは比較のためにint秒に変換する必要があります。あなたの見ている動作は、文字列を比較することです。

e.g-

sorted(d.items(), key = lambda x: int(x[1]), reverse = True) 
+0

ありがとうございました!これはちょうど私が必要としたものです - 私はとても遅く答えました! – cqubit

1

キーの機能を変更して、順序が計算された値を数値に変換します。あなたは整数のみを使用していると仮定すると、ソートラインは次のようになります。

od = sorted(d.items(), key=lambda x: int(x[1]), reverse=True)

関連する問題