Python:1032 挖掘机技术哪家强_代码比较简洁_没有解决运行超时

  • Post author:
  • Post category:python


首先接收输入的数据,这很简单,可以用

字典

num = int(input())
score = {}
for i in range(num):
    a, b = map(int, input().split())
    if a not in score.keys():  # 如果不存在,那么创建key以及value值
        score[a] = b
    else:
        score[a] += b  # 如果存在,那么在这基础上加上value值

接着,我有两种方法去判断字典的最大值(学校的总分)并输出最大值对应的key值(即学校代号)。第一种是按部就班,第二种就是充分利用list的index函数,keys(), values()求解,

第三种:将字典key和value颠倒

第一种:

max_key = 0  # 最大值初始化为0
max_value = -1  # 由于最大值>=0, 所以这里让最大值初始化为-1没有问题
for i in score.keys():  #简单的遍历找最大值
    if score[i] > max_value:
        max_key = i
        max_value = score[i]

第二种:

max_value = max(score.values())  # 通过max函数找最大值
max_key = list(score.keys())[list(score.values()).index(max_value)]
'''1.将score.values()列表化,这样才可以用index()函数
    2.用index()函数可以找出max_value对应的index
    3.由于将score.keys()列表化可以通过索引来找值'''

第三种:

将字典key和value颠倒

max_value = max(score.values())
score = {v : k for k, v in score.items()}
max_key = score[max_value]

完整代码如下:

num = int(input())
score = {}
for i in range(num):
    a, b = map(int, input().split())
    if a not in score.keys():
        score[a] = b
    else:
        score[a] += b
'''max_key = 0
max_value = -1
for i in score.keys():
    if score[i] > max_value:
        max_key = i
        max_value = score[i]
print(max_key, max_value)'''
max_value = max(score.values())
score = {v : k for k, v in score.items()}
max_key = score[max_value]
print(max_key, max_value)