菜鸟每日刷牛客
描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,随后按照索引值的大小从小到大依次输出。
输入描述:
第一行输入一个整数n(1≦n≦500)代表数据表的记录数。
此后n行,第 i 行输入两个整数xi,yi(0≦xi≦11111111; 1≦yi≦10^5)代表数据表的第i条记录。
输出描述:
输出若干行,第 i 行输出两个整数,代表合并后数据表中第 i 条记录的索引和数值。
示例1
输入:
4
0 1
0 2
1 2
3 4
输出:
0 3
1 2
3 4
说明:
在这个样例中,第 1,3 条记录索引相同,合并数值为1+2=3 。
个人题解
num_row = int(input())
dic = {}
for i in range(0,num_row):
xi, yi = map(int,input().split(" "))
if xi in dic.keys():
dic[xi] = dic[xi] + yi
else:
dic[xi] = yi
d = sorted(dic.items(),reverse=False)
for k in d:
print(k[0],end=" ")
print(k[1],end='\n')
大佬题解
n = int(input())
dic = {}
# idea: 动态建构字典
for i in range(n):
line = input().split()
key = int(line[0])
value = int(line[1])
dic[key] = dic.get(key, 0) + value # 累积key所对应的value
for each in sorted(dic): # 最后的键值对按照升值排序
print(each, dic[each])
dic = {}
n = int(input())
while True:
try:
line = input()
tmp = line.split()
index = int(tmp[0])
value = int(tmp[1])
if index in dic:
dic[index] += value
else:
dic[index] = value
except:
break
for k, v in sorted(dic.items()):
print(f'{k} {v}')
总结
字典排序
sort(dic)按照键排序,返回列表;- sort(dic.items())按照值排序,并且返回键值对列表。

2361

被折叠的 条评论
为什么被折叠?



