2017-11-03 16 views
0

現在、私はHackerRankでコード化する方法を学習しています。問題の1つは、2番目に低い学年の学生の名前を返すことです。これは、名前(型文字列)とスコア(浮動小数点数)をサブリストの一部として持つネストされたリストです。したがって、例は次のとおりです。リスト内の要素としてfloatを含む入れ子リストをソートする方法はありますか?

students = [ 
    ['Harry', 37.21], 
    ['Berry', 37.21], 
    ['Tina', 37.2], 
    ['Akriti', 41], 
    ['Harsh', 39] 
] 

上記の正しい回答のリストは、「Harry」と「Berry」を返します。コンパイラに与えられたコードは

if __name__ == '__main__': 
    for _ in range(int(input())): 
     name = input() 
     score = float(input())` 

であり、Iは、与えられたものの後に追加したコードはstudents.append([name, score])内部forループ(if __name__ == '__main__':後)students = []ました。最後に、2番目に低い学年の生徒を印刷するようにしていますが、どうやってそれをどうやって進めるのかは分かりません。助言がありますか? (私はそれにソートされた関数を持つコードの多くの行を試してきましたが、常にfloatstrまたはfloatのオブジェクト間でサポートされていない<のようなエラーを取得するオブジェクトはiterableまたは浮動小数点に浮動小数点申し訳ありませんが、どのコードがどのエラーを投げたか覚えていませんでした)まず、申し訳ありませんが質問されています。本当に答えを見つける。二番目に、私が怒っている、または不平を言っているように見える場合は申し訳ありませんが、私は今この問題に悩まされており、うつ病になりつつあります。プログラムのコードの価値。第三に、助けをありがとう。

答えて

0
print(sorted(students, key = lambda x : x[1])) 
1

あなたは内部のリストの各々の第2の要素を使用してソートすることを伝えますkeysort()機能を使用することができます。

students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]] 
students.sort(key = lambda x : x[1]) 

# students = [['Tina', 37.2], ['Harry', 37.21], ['Berry', 37.21], ['Harsh', 39], ['Akriti', 41]] 
print(students[1]) 

出力:

['Harry', 37.21] 
関連する問題