ソートの勉強になる問題です。
市名と点数を格納していくので、辞書かな?
→同じ市が複数あるので辞書は使えません。
レストランの番号はリストのインデックスかな?
→並び替えるので、リストにレストランの番号を入れた方がいい。
という訳で、リストに番号、市名、点数を入れていきます。
市名と点数の並び替えってどうやるの?
→l.sort(key=lambda x:x[1],x[2])
キモは、市名は辞書順(昇順)だけれど、点数は降順という所。
解説の方には、点数を-1倍するとあって、なるほどなーと思いました。
第1キーは昇順、第2キーは降順にしたい場合は
キーに-をつければ降順になるという記事を見つけたので、
その方法を使ってみました。
n=int(input())
l=[]
for i in range(n):
s,p=input().split()
l.append([i+1,s,int(p)])
l.sort(key=lambda x:(x[1],-x[2]))
for i in l:
print(i[0])