HackerRank Nested Lists

本文介绍如何使用Python找出一组分数数据中第二小分数对应的所有人名,并按字典序输出。通过两种不同的实现方式展示了如何高效地解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//题意:给你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用于将元素按照这种方式连接输出
###有哪里理解不对的地方请你指出,大家一起进步谢谢###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值