Bootstrap

HJ8 合并表记录

数据表记录包含表索引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。

;