数据表记录包含表索引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
import sys
n=int(input())
lis=[]
dic={}
for i in range(n):
li=input().split(" ")
lis.append(li)
for k,v in lis:
if k in dic:
dic[k] = int(dic[k]) + int(v)
else:
dic[k] = v
dict1 = sorted(dic.items(), key=lambda x : int(x[0]))
for key,value in dict1:
print(key,value)
字典生成方式:拥有一个二维数组。字典(Dictionary)是Python中非常常用的数据结构之一,它是由一系列键(key)和对应的值 (value)组成的。在Python中,字典是一种可变的、无序的集合,可以通过键来访问和修改对应的值。
字典追加元素:
方法一:方括号[]法
dic1['key'] = 值,即可用于修改字典中的键值对,又可用于新增字典中的键值对。
当键存在时,为修改。
当键不存在时,为新增。
方法二:dic1.update(dic2)
dic1.update(dic2)既可用于修改字典中的键值对,又可用于新增字典中的键值对。
当dic2中有键与dic1中键冲突时,会修改dic1中的键所对应的值,即用dic2中冲突键的值去覆盖dic1中的冲突键的值。
当dic2中的键不与dic1中键冲突时,则会在dic1中新增dic2中的键值对。
方法三:dic1.update(key,default_value)
setdefault()方法可以用于在字典中获取指定键的值,如果该键不存在,它会在字典中添加该键,并设置对应的默认值。如果键已经存在于字典中,则会返回该键对应的值,不会对字典做任何修改。
setdefault()方法的语法如下:
1 |dict.setdefault(key,default_value)
其中,dict表示要操作的字典对象,key是要获取或添加的键,default_value是可选参数,表示在键不存在时设置的默认值。如果省略default_value参数,则默认为None 。
setdefault()方法的返回值
setdefault()方法的返回值是获取或添加的键的值。如果键已经存在于字典中,则返回该键对应的值;如果键不存在,则返回设置的默认值。
1、万能的方括号[],如果dic['key']单独使用,则是获取键所对应的值,如果dic['key'] = 值,则根据键存在与否,可以修改键所对应的值,也可以新增键值对。
2、使用第一种方法,方括号[]法比较方便,update方法也比较方便。
3、注意,在使用时不小心经常犯下面的错误:注意student.get('score')是获取的值,是表达式,不能作为左值。
import sys # 导入sys模块
n = int(input()) # 从输入读取一个整数n,表示后续输入的行数
dic = {} # 初始化一个空字典dic
for i in range(n): # 循环n次,读取n行输入
line = input().split() # 读取一行输入,并按空格分割成列表line
key = int(line[0]) # 将列表的第一个元素转换为整数,作为字典的键
value = int(line[1]) # 将列表的第二个元素转换为整数,作为字典的值
dic[key] = dic.get(key, 0) + value # 更新字典中的键值对,如果键不存在,则值默认为0,并加上当前值
# 输出字典中的键值对
for each in sorted(dic): # 按键的升序排序字典的键
print(each, dic[each]) # 逐个打印排序后的键及其对应的值
get()函数:python字典get用法_详细解析python字典get()实例教程
get()是查找并返回字典中的某个键的值,找到则返回该值,找不到则返回None。
字典方法get()有两个参数,
- key :(必选)指定要搜索的键
- value :(可选)如果键不存在,就返回指定内容
返回值
- 如果键存在,就返回键对应的值
- 如果键不存在,就返回指定内容或None
字典中「嵌套」字典时,可以多次调用 get() ,来取值。
get() 和 dict[key] 都可以根据键获取字典的值,不同的是
get() 的键在字典中不存在时,会返回「None」 或 「指定内容」;dict[key] 的键在字典中不存在时,会「报错」 KeyError: ‘key3’
get() 可以「统计」列表元素出现的「个数」,将统计结果保存到字典中
Python中还有一种方法可以判断字典中是否有某个值,这种方法就是恒等运算符。
字典中的恒等运算符是 is 和 is not。(调用get()函数,查询某一个键值对应value, 看其是否存在)
=、==和is的区别
1、=在任何编程语言中都是赋值,赋值是引用,引用是引用内存地址。
2、==是比较两个值是否相等,比较的是两个对象的内容是否相等,即内存地址可以不同,内容相同就行。
3、 is是比较两个实例对象是不是完全相同,它们是不是同一个对象,即id是不是相同,是不是占用同一块内存空间。
4、 is 运算符比==效率高,在变量和None进行比较时,应该使用is。