//题意:给你n组数据,每组数据是一个人名对应一个分数,要求输出第二小分数的所有人名,人名不唯一
//思路:很简单选出第二小的分数,根据字典的键值对items迭代,输出,但是输出记得排序,人名按照字典序输出,见代码:
//下面这一份是沿用c++思想和写代码的方式写的,因为刚刚学python,基本习题习惯都是沿用学acm的方式():
# python3
if __name__ in '__main__':
dict = {}
min_score = 120
min_second_score = 120
p_name = ""
lst = []
for _ in range(int(input())):
name = input()
score = float(input())
if min_score > score:
min_score = score
dict[name] = score
for v in dict.values():
if v != min_score:
min_second_score = min(min_second_score, v)
for k,v in dict.items():
if v == min_second_score:
lst.append(k)
lst1 = sorted(lst)
for i in lst1:
print(i)
//这是一个比较简单的python风格代码:
# python3
if __name__ in '__main__':
lst = []
for _ in range(int(input())):
name = input()
score = float(input())
lst.append([name, score])
if __name__ in '__main__': #这里直接将键值对当做元素添加到列表中有点像多维数组
second_highest = sorted(list(set([score for name, score in lst])))[1] #感觉这里用到的列表生成式好简洁
print('\n'.join([a for a, b in sorted(lst, key = lambda a : a[0], reverse = False) if b == second_highest]))
#这里用到了lambda表达式用于确定用键值对中的其中一个进行排序,'\n'.join用于将元素按照这种方式连接输出
###有哪里理解不对的地方请你指出,大家一起进步谢谢###