首页 > 其他分享 >字典的增删改查

字典的增删改查

时间:2024-09-28 17:49:20浏览次数:3  
标签:dict1 改查 何晨光 print 姓名 增删 message 字典

一.字典的基础知识

        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'

标签:dict1,改查,何晨光,print,姓名,增删,message,字典
From: https://blog.csdn.net/2303_81133811/article/details/142466170

相关文章

  • 解读MySQL8.0数据字典重构源码
    本文分享自华为云社区《【华为云MySQL技术专栏】MySQL8数据字典重构源码解读》,作者:GaussDB数据库1.背景介绍在MySQL5.7版本的使用实践过程中,我们很容易遇到DDL崩溃后导致数据不一致的问题,具体场景描述如下:主备高可用架构部署下,备机回放执行DROPTABLE的中途,因触发其它社区......
  • Day7 列表,元组,字典,集合类型的内置方法
    今天仍然没复习,因为人家留作业了但我没有*-*,今天仍然学的内置方法,昨天学的各种数据的,今天学的列表,元组,字典,集合等类型的内置方法,学了好多好多快捷语言,没法概述,但又有一点,明天总复习完一定要先总结一下哪些是直接更改可以直接输出,哪些是操作,需要操作完在输出,直接输出返回none。哎对......
  • 字典
    1.1、创建字典1.1.1、创建字典的几种方式1.1.1.1、使用大括号创建dict001={'a':1,'b':2,'c':3}1.1.1.2、使用dict()函数创建#使用dict的构造方法,参数为关键字参数dict001=dict(a=1,b=2,c=3)#{'a':1,'b':2,'c':3}#使用dict的构造方法,参......
  • MySQL零基础入门教程-8.1 表的连接\增删数据、表结构的增删改、字段约束(非空、唯一
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我听课收集整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的第八篇的第一部分1、表怎么进行连接的P77-P1431、表怎么进行连接的从emp表中取ename,从dept表中取dname,没有条件限制最终查询结果是......
  • 利用反射扫描枚举生成数据字典数据
    在开发过程中经常遇到既需要维护枚举来完成各种条件判断,又需要维护数据字典供前端使用,维护数据字典的另一个用处是可以修改数据字典的label而无需调整代码,但是这种两边维护的方式非常浪费人力资源,甚至有时部署程序忘了维护数据字典导致线上环境出现无法正常显示等问题。为解......
  • hibernate 自定义表名与列名 - 增删改查分页 - 兼容Mysql和Oracle
    1.新增service,先组装SQLimportlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.data.domain.Page;importorg.springframework.stereo......
  • 05 in 判断是否包含查找内容示例 包含 字符串 列表 元组 字典
    1、strv="Python全栈21期"if"全栈"inv:print('含敏感字符')2、list/tuplev=['alex','oldboy','藏老四','利奇航']if"利奇航"inv:print('含敏感')3、dictv={'k1......
  • 05 字典内存分配
    data_list=[]foriinrange(10):data={}data['user']=idata_list.append(data)print(data_list)#每个字典都不一样字典,列表内存指向图data={}foriinrange(10):data['user']=iprint(data)内存占用图......
  • 16 字典 独有功能
    帮助用户去表示一个事物的信息(事物是有多个属性)。存储数据时,需要健值时,使用字典进行存储info={"name":'刘伟达','age':18,'gender':'男','hobby':'同桌'}#键值#请输出:我今天点%s,他的年龄是%s,性别是%s,他喜欢他的%s;基本格式data={键:值,键:值,键:值,键:值,键:......
  • 18 字典 练习题
    练习题#!/usr/bin/envpython#-*-coding:utf-8-*-""""""#1.请获取"刘伟达""""info={"name":'刘伟达','age':18,'gender':'男','hobby':'同桌'}......