描述
数据表记录包含表索引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
from collections import defaultdict
while True:
try:
a,dd=int(input()),defaultdict(int)
for i in range(a):
key,val=map(int,input().split())
dd[key]+=val
for i in sorted(dd.keys()):
print(str(i)+" "+str(dd[i]))
except:
break
补充:
1.注意这里有可能输入没有对应值的键,所以用collections模块的defaultdict类,这样在调用的时候,dict[key] = xxx,即使key不在字典里也不会报错。(而普通dict会报错,如下例所示)它的其他功能与dict相同,但会为一个不存在的键提供默认值。
defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的类实例,而且具有默认值。比如default(int)则创建一个类似dictionary对象,里面任何的values都是int的实例,而且就算是一个不存在的key, d[key] 也有一个默认值,这个默认值是int()的默认值0.
用法:
(1)defaultdict(int):初始化为 0
(2)defaultdict(float):初始化为 0.0
(3)defaultdict(str):初始化为 ”