描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入:
4 0 1 0 2 1 2 3 4
输出:
0 3 1 2 3 4
示例2
输入:
3 0 1 0 2 8 9
输出:
0 3 8 9
本题可以采用python字典映射的特性来解决,使用map和split分别获得输入的键和值,然后根据键是否在dic字典中来判断是添加新的键值对还是给对应键的值更新,这里in dic是用键来判断的。等输入处理完毕后,通过列表推导式得到dic字典的键序列并用sorted对其排序,最后得到答案。
num=int(input())
dic={}
for i in range(num):
index,value=map(int,input().split())
if index not in dic:
dic.update({index:value})
else:
dic[index]+=value
for key in sorted([key for key in dic.keys()]):
print("{i} {v}".format(i=key,v=dic[key]))