AtCoder国にあるN個の山のうち、2番目に高い山の名前を答える問題です。
提出
n = int(input())
li=[list(map(str,input().split())) for _ in range(n)]
li.sort(reverse=True, key=lambda x: int(x[1]))
print(li[1][0])
入力Nを受け取った後、N個の山の名前と高さを、リスト内包表記を用いてリストにします。
入力例2の場合、リストは以下のようになっています。
[['Kita', '3193'], ['Aino', '3189'], ['Fuji', '3776'], ['Okuhotaka', '3190']]
このリストを2番目の要素で降順ソートします。
ソートに「reverse=True」をつけると降順になり、「key=lambda x: int(x[1])」をつけると、2番目の要素をキーにしたソートになります。
lambda式は無名関数といい、名前のない関数を作るときに使用します。
a = lambda x : x*2
print(a(4)) # > 8
入力例2のリストを2番目の要素で降順ソートすると以下のようになります。
[['Fuji', '3776'], ['Kita', '3193'], ['Okuhotaka', '3190'], ['Aino', '3189']]
2番目に高いの山の名前は、「li[1][0]」で取得できるのでこれを出力します。