字典的增删改查

一.字典的基础知识

        1.字典的创建

        2.字典中的键与值

二.字典方法:增删改查

        1.增:setdefault(),update(),通过键名添加

        2.删:pop(),popitem(),clear()

        3.改:通过键名修改,update()

        4.查:get(),keys(),values(),items(),通过键名查看

字典的基础知识

1.字典的创建

通过字典名={"键":"值","键":"值"},进行创建,每对键值对使用","隔开,键与值之间使用":"

dict1={"姓名":"李二牛","年龄":19}
print(dict1)
print(type(dict1))
{'姓名': '李二牛', '年龄': 19}
<class 'dict'>

 特殊的:dict函数可以接受一个可迭代对象(如列表中的列表元组,元组中的元组列表,等可迭代对象,其中每个内部可迭代对象都包含两个值,分别为建和值,但是不能接受两个单独的列表作为参数)

n=dict(((1,2),(3,4)))
m=dict([[1,2],[3,4]])
l=dict(([1,2],[3,4]))
p=dict([(1,2),(3,4)])
print(n)
print(m)
print(l)
print(p)
{1: 2, 3: 4}
{1: 2, 3: 4}
{1: 2, 3: 4}
{1: 2, 3: 4}

2.字典中的键与值

字典名={"键":"值"},其中键可以是任何的不可变类型(数值,字符串,元组),值可以是任意类型

dict1={('姓名',"1"):'李二牛','年龄':19,19:['年龄'],'字典':{'姓名':'王艳兵','年龄':19,'地点':'铁拳团'}}
print(type(dict1))
print(dict1)
<class 'dict'>
{('姓名', '1'): '李二牛', '年龄': 19, 19: ['年龄'], '字典': {'姓名': '王艳兵', '年龄': 19, '地点': '铁拳团'}}

一.增:增加元素


方法一:setdefault()

语法格式:字典名.setdefault(键,值)

setdefault(键,值)一次只能加一对,字典中当该键名存在时不会改变原值,当键名不存在时会加上这一对键值对,当只有键名没有值时,默认值为None

该例子中,由于键"姓名"有对应的值"李二牛",在使用message.setdefault("姓名","何晨光")时不会对字典进行改变,而字典中没有"年龄"这个键,所以会在字典中加上这个键值对,由于键"时间"没有值,所以在字典中键"时间"的值为None

message = {'姓名': '李二牛', '姓名1': '王艳兵', '地点': '铁拳团'}
message.setdefault('姓名', '何晨光')
message.setdefault('年龄', 19)
message.setdefault("时间")
print(message)
{'姓名': '李二牛', '姓名1': '王艳兵', '地点': '铁拳团', '年龄': 19, '时间': None}

方法二.update()

语法格式:字典名.update()

 update({键:值,键:值.....})一次可以同时增加多个键值对,字典中当该键名存在时改变原值,当键名不存在时会加上这一对键值对.

该例子中字典message键"姓名"值为"李二牛",使用update()后键"姓名"更新为"何晨光",由于字典message中没有键"爱好"和"军衔",所以会加上.

通过上面关于setdefault()的用法,键"特点"没有指定值,所以默认为None,当使用update()方法后,键"特点"值由None变为"未知".

message={'姓名': '李二牛', '姓名1': '王艳兵'}
message.update({'姓名':'何晨光','爱好':'学习','军衔':"中尉"})
message.setdefault("特点")
print(message)
message.update({'特点':'未知'})   #使用update可以改变none的值
print(message)
{'姓名': '何晨光', '姓名1': '王艳兵', '爱好': '学习', '军衔': '中尉', '特点': None}
{'姓名': '何晨光', '姓名1': '王艳兵', '爱好': '学习', '军衔': '中尉', '特点': '未知'}

方法三:使用键名添加

语法格式:字典名[键]=新值

 当字典中不存在该键时,会添加该键值对,当键名存在时,会修改值为新值

在该例子中,由于不存在"特点"这一个键,所以会加上"特点":"锻炼"这一个键值对

message={"姓名":"李二牛","地点":"铁拳团"}
message["特点"]="锻炼"
print(message)
{'姓名': '李二牛', '地点': '铁拳团', '特点': '锻炼'}

二.删:删除元素


方法一:pop()

语法格式:字典名.pop(键)

pop() 方法用于从字典中移除指定的键值对,并返回该键对应的值。如果指定的键不存在于字典中,则pop()方法会抛出一个KeyError异常。不过可以提供一个默认值作为第二个参数,如果指定的键不存在,则返回这个默认值,而不是抛出异常。

该例子中先使用pop()方法删除"姓名"键值对,返回值为李二牛,当键"爱好"不存在时,返回第二个参数"查无此信息"

message={'姓名': '李二牛', '姓名1': '王艳兵'}
data=message.pop('姓名')
data1=message.pop('爱好',"查无此信息")
print(data)
print(data1)
print(message)
李二牛
查无此信息
{'姓名1': '王艳兵'}

如下当键"特点"不存在时,会出报错 KeyError

message={'姓名': '李二牛', '姓名1': '王艳兵'}
message.pop("特点")
print(message)
KeyError: '特点'

方法二:popitem()

popitem() 方法用于从字典中移除并返回一个键值对(以元组形式 (key, value))。与 pop() 方法不同的是,popitem() 方法默认移除并返回字典中的最后一个(即最近添加的)键值对.

该例子中使用popitem()删除最后一个键值对,返回值为元组('姓名1','王艳兵')

message={'姓名': '李二牛', '姓名1': '王艳兵'}
data=message.popitem()
print(data)
print(message)
('姓名1', '王艳兵')
{'姓名': '李二牛'}

 当列表为空时使用popitem()方法时会报错KeyError

message={}
message.popitem()
print(message)
KeyError: 'popitem(): dictionary is empty'

 方法三:clear()

语法格式:字典名.clear()

 clear()方法用于清空列表

message={'姓名': '李二牛', '姓名1': '王艳兵'}
message.clear()
print(message)
{}

三.改:修改元素


方法一:通过键名修改

语法格式:字典名[键名]=新值

一次仅能修改一个,与通过键名添加元素的语法一样,不同的是当键名存在时,将原数据改为新值

在该例子中由于键"姓名"存在,所以会修改原值"李二牛"变为"何晨光"

message={"姓名":"李二牛","地点":"铁拳团"}
message["姓名"]="何晨光"
print(message)
{'姓名': '何晨光', '地点': '铁拳团'}

 方法二:update()

语法格式:字典名.update()

 update()方法一次可以修改多个,既当键名存在时,会改变原有的值

在该例子中,由于键"姓名"和"姓名1"都存在,所以其对应的数值都会发生改变.

message={'姓名': '李二牛', '姓名1': '王艳兵'}
message.update({'姓名':'何晨光','姓名1':'龚箭'})
print(message)
{'姓名': '何晨光', '姓名1': '龚箭'}

四.查:查看元素


方法一:get()

语法格式:字典名.get()

 get(键,设置值),用于获取键所对应的值,若没有该键,则返回设置值(可以设置,也可以不设置,不设置是当键不存在,则会返回None,而不会报错)

在该例子中,由于字典中有'年龄'这个键,所以会返回年龄对应的值20,"特点"这个键不存在,所以会输出设置值"若没有特点则输出这句话"

dict1={"姓名":"何晨光","年龄":20}
print(dict1.get('年龄',"若没有年龄则输出这句话"))
print(dict1.get('特点','若没有特点则输出这句话'))
print(dict1.get("te"))
20
若没有特点则输出这句话
None

方法二:keys()

语法格式:字典名.keys()

 keys()用于获取字典中所有的键(key)组成的视图对象(view object),这个视图对象是一个集合(set-like)对象,不能使用索引功能,但是可以将其转变为列表(元组)类型

dict1={"姓名":"何晨光","年龄":20}
print(dict1.keys())
print(list(dict1.keys()))
dict_keys(['姓名', '年龄'])
['姓名', '年龄']

方法三:values()

语法格式:字典名.values()

  values()用于获取字典中所有的值(values)组成的视图对象(view object),这个视图对象是一个集合(set-like)对象,不能使用索引功能,但是可以将其转变为列表(元组)类型

dict1={"姓名":"何晨光","年龄":20}
print(dict1.values())
print(tuple(dict1.values()))
dict_values(['何晨光', 20])
('何晨光', 20)

方法四:items()

语法格式:字典名.items()

于获取字典中所有的(键,值)对组成的视图对象(view object)。这个视图对象允许你迭代字典中的每个项,其中每个项都是一个包含键和值的元组(tuple)

dict1={"姓名":"何晨光","年龄":20}
print(dict1.items())
print(list(dict1.items()))
dict_items([('姓名', '何晨光'), ('年龄', 20)])
[('姓名', '何晨光'), ('年龄', 20)]

方法五:通过键名查看

语法格式:字典名[键]

 通过键名获取对应的值,当键名不存在时,会返回KeyError

dict1={"姓名":"何晨光","年龄":20}
print(dict1["姓名"])
print(dict1["23"])
何晨光
KeyError: '23'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值