Python.牛客.HJ8.合并表记录
題目描述
數據表記錄包含表索引和數值(int范圍的正整數),請對表索引相同的記錄進行合并,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。
輸入描述:
先輸入鍵值對的個數
然后輸入成對的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]+=valfor i in sorted(dd.keys()):print(str(i)+" "+str(dd[i]))except:break補充:
1.注意這里有可能輸入沒有對應值的鍵,所以用collections模塊的defaultdict類,這樣在調用的時候,dict[key] = xxx,即使key不在字典里也不會報錯。(而普通dict會報錯,如下例所示)它的其他功能與dict相同,但會為一個不存在的鍵提供默認值。
例如:
bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry'] count = {} for fruit in bag:count[fruit] += 1錯誤: KeyError: 'apple',因為apple這個key事先不存在于該字典中。而這樣則不會報錯:
import collections bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry'] count = collections.defaultdict(int) for fruit in bag:count[fruit] += 1輸出: defaultdict(<class 'int'>, {'apple': 3, 'orange': 1, 'cherry': 2, 'blueberry': 1})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):初始化為 ”
2.當split()不帶參數時,默認以空格進行分割,當帶參數時,以該參數進行分割。
例如:
輸出:[‘a’, ‘b’, ‘c’, ‘d’]
3.sorted(iterable, cmp=None, key=None, reverse=False)
默認升序,降序請加reverse=True
輸出:
[(‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12), (‘john’, ‘A’, 15)]
總結
以上是生活随笔為你收集整理的Python.牛客.HJ8.合并表记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络算法中求解的方式,神经网络的求解
- 下一篇: S3C2410 WinCE6.0的中断