題目
描述
數(shù)據(jù)表記錄包含表索引和數(shù)值(int范圍的正整數(shù))栅炒,請對表索引相同的記錄進行合并,即將相同索引的數(shù)值進行求和運算术羔,輸出按照key值升序進行輸出赢赊。
輸入描述:
先輸入鍵值對的個數(shù)
然后輸入成對的index和value值,以空格隔開
輸出描述:
輸出合并后的鍵值對(多行)
示例1
輸入:
4
0 1
0 2
1 2
3 4
輸出:
0 3
1 2
3 4
解題思路
(1)記錄輸入的key, value個數(shù)聂示,賦值給num
(2)新建空字典data_dict
(3)循環(huán)num次域携,用split分割輸入的帶空格的字符串,并賦值給臨時變量key和value
(4)判斷key是否已在data_dict中鱼喉,在的話兩個value求和秀鞭,不在的話賦值value
(5)通過sorted函數(shù)對data_dict進行排序趋观,key = lambda x:int(x[0])控制排序key
(6)逐步輸出排序后的key和value
擴展:
(1)加入?yún)?shù)reverse可以進行倒排
(2)int函數(shù)用于將字符串轉(zhuǎn)換成整數(shù),否則排序會按照字符串排
>>>"3 4".split()
['3', '4']
>>>data_dict = {"1": 2, "3": 4}
>>>"1" in data_dict
True
>>>"5" in data_dict:
False
>>>"1" in data_dict.keys()
True
>>>sorted(data_dict.items(), key = lambda x:int(x[0]))
[('1', 2), ('3', 4)]
>>>sorted(data_dict.items(), key = lambda x:int(x[0]), reverse = True)
[('3', 4), ('1', 2)]
>>>data_dict = {"1": 2, "3": 4, "11": 4}
>>>sorted(data_dict.items(), key = lambda x:x[0])
[('1', 2), ('11', 4), ('3', 4)]
代碼
while True:
? ? try:
? ? ? ? num = int(input())
? ? ? ? data_dict = {}
? ? ? ? for i in range(num):
? ? ? ? ? ? key, value = input().split()
? ? ? ? ? ? if key in data_dict:
? ? ? ? ? ? ? ? data_dict[key] = data_dict[key] + int(value)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? data_dict[key] = int(value)
? ? ? ? data = sorted(data_dict.items(), key = lambda x:int(x[0]))
? ? ? ? for (key,value) in data:
? ? ? ? ? ? print(str(key)+" "+str(value))
? ? except Exception as e:
? ? ? ? break