当前位置: 首页 > news >正文

python基础专栏12-python基础篇-复合数据类型-字典

前言

曾经在儿时小学阶段学习语文时,字典在学习过程中起到了非常的作用,也就是在那时候,我们学会了字典的使用方法,通过拼音或部首,找到汉字所在的页码,通过页码就可以找到汉字的释义。

在python当中,字典是一类非常重要的复合数据类型,它的数据元素格式和之前学习的列表、元组和集合不同,字典中的元素是由两部分组成:键(key):值(value)对。字典是一种映射类型的数据结构。

字典中的数据是按照键(key)进行索引存储和获取的。

字典概念定义

字典是一个无序、可变和有索引的复合数据结构体,里面可以存放任何数据类型的数据。

字典中的数据元素格式为:key:value,键和值之间用冒号连接,数据元素之间是通过逗号分隔,和列表、元组和集合一样。

字典的创建

方式一:直接用界定符赋值的方式创建

dict1={"name":"张三","age":20,"sex":"男","address":"济宁"}
print("dict1的数据类型:",type(dict1))
print("dict1的值为:",dict1)


'''
************执行结果*****************

dict1的数据类型: <class 'dict'>
dict1的值为: {'name': '张三', 'age': 20, 'sex': '男', 'address': '济宁'}


'''

方式二:通过dict函数创建。

通过此函数生成时,需要按照关键字参数(后续会在函数章节进行详细讲解什么是关键字传参)的方式进行传参。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("dict1的数据类型:",type(dict1))
print("dict1的值为:",dict1)


'''
*****************执行结果******************

dict1的数据类型: <class 'dict'>
dict1的值为: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
'''

字典的特点

1、字典的元素的值可以是任何类型,但是键只能是不可变类型的数据,比如数值、字符串、元组类型。

2、字典中键具有唯一性,不能重复。

3、字典是通过键获取值。

字典支持的方法

len(dict1)

此方法返回字典中元素的个数。

dict2=dict(name="张三",age=21,sex="男",address="济宁")
print(len(dict2))

'''
****************结果输出******************
4

'''

str(dict1)

此方法返回字典的字符串表示。

dict2=dict(name="张三",age=21,sex="男",address="济宁")
print(str(dict2))

'''
*******************结果输出*****************
{'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
'''

字典上的操作

字典同样是用来进行存储数据的容器,并且是可变类型,所以它支持增删改查的操作。

添加数据

方式①:

按键赋值,添加新元素(键不存在的情况)。

如果键存在的话,则是更新数据。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1["major"]="计算机科学与技术"
print("添加数据后:",dict1)



'''
****************执行结果***********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'major': '计算机科学与技术'}
'''

方式②

update()方法,通过关键字参数,关键字在字典中不存在的话,则是增加数据,否则是修改数据。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.update(hobby="跑步")
print("添加数据后:",dict1)

'''

********************执行结果********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'hobby': '跑步'}
'''

删除数据

方式①

通过del语句进行删除,如果键不存在,则抛出异常。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
del dict1['name']
print("删除数据后:",dict1)
'''

********************执行结果***************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
'''

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
del dict1['name1']
print("删除数据后:",dict1)

'''
****************执行结果********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
Traceback (most recent call last):
  File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in <module>
    del dict1['name1']
KeyError: 'name1'
'''

方式②

pop()方法

通过此方法也可以删除字典当中的数据元素,如果键不存在,则抛出异常。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.pop('name')
print("pop方法删除数据后:",dict1)
'''
***************执行结果****************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
pop方法删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
'''


dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.pop('name1')  #删除不存在的key

'''
*****************执行结果**************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
Traceback (most recent call last):
  File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in <module>
    dict1.pop('name1')  #删除不存在的key
KeyError: 'name1'
'''

修改数据

修改数据就是把现有的键(key)对应的值改变,即指向新的数据。

方式①:

直接重新赋值修改键对应的值。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1['name']="李四"
print("修改后的字典值:",dict1)

'''
*******************执行结果**********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
'''

方式②:

update()方法,通过调用update方法,关键字参数的方式修改字典的值。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.update(name="李四")
print("修改后的字典值:",dict1)
'''
*******************执行结果*************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
'''

查看数据

字典获取数据的方式是通过键获取值。

有两种操作方式。

方式①:按键取值,键存在,返回对应的值,键不存在,抛出异常。

语法格式:value=dict1["key1"]

dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1['name']
print("键name对应的值:",value)
'''
*******************执行结果****************
键name对应的值: 张三
'''


dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1['name1']
print("键name对应的值:",value)

'''
***************执行结果*************************
Traceback (most recent call last):
  File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 2, in <module>
    value=dict1['name1']
KeyError: 'name1'
'''

方式②

dict1.get('key1')

通过get方法也可以获取键对应的值,键存在时,返回对应的值,不存在时,返回默认的值为None,也可以传入默认值。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1.get("name")
print("键name对应的值:",value)
'''
*****************执行结果****************
键name对应的值: 张三
'''

dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1.get("name1")
print("键不存在时的默认值None:",value)

value2=dict1.get("name1","李四")
print("键不存在时的默认值:",value2)

'''
***************执行结果*******************
键不存在时的默认值None: None
键不存在时的默认值: 李四
'''

字典的遍历

dict1.keys()

返回字典的所有键,数据类型为列表类型。

dict1.values()

返回字典的所有值,数据类型为列表类型。

dict1.items()

返回字典的所有数据项,数据类型为列表类型,列表中的数据格式为元组,每个元组里面是字典单个数据元素的键和值。

dict1=dict(name="张三",age=21,sex="男",address="济宁")
keys=dict1.keys()
print("键的类型:",type(keys))
print("字典键为:",keys)


values=dict1.values()
print("值的类型:",type(values))
print("字典值为:",values)

items=dict1.items()
print("项的类型:",type(items))
print("字典项为:",items)

'''
********************执行结果********************
键的类型: <class 'dict_keys'>
字典键为: dict_keys(['name', 'age', 'sex', 'address'])
值的类型: <class 'dict_values'>
字典值为: dict_values(['张三', 21, '男', '济宁'])
项的类型: <class 'dict_items'>
字典项为: dict_items([('name', '张三'), ('age', 21), ('sex', '男'), ('address', '济宁')])
'''

字典的特殊用法

可以用zip方法,把两个相等大小的列表转换成字典。

list1=['a','b','c','d']
list2=[1,2,3,4]
dict1=dict(zip(list1,list2))
print(dict1)
print(type(dict1))

'''
*******************执行结果*************************
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
<class 'dict'>
'''

以上就是字典相关的知识,希望对您有所帮助。

------------------------------------------------------------

您的支持和关注是作者持续创作的动力源泉。

相关文章:

  • 投入不到一万,月赚十万+的海外平台搬运项目
  • 赚钱副业项目:steam搬砖的一点经验
  • Go 1.18 版本新特性详解!
  • 共码未来 | 多维提升开发技能,玩转各大开发者平台活动
  • html5新增特性之画布canvas的使用
  • 查题校园题库系统 授权即可使用
  • 弹性力学的简单学习
  • 青云霍秉杰:一文读懂Prometheus长期存储主流方案
  • 【Swoole系列4.6】协程连接池
  • 美的集团上半年营收1827亿:净利160亿 狠心批量裁员
  • 手机+卫星,到底有多难?
  • c++基础(九)——静态成员
  • Android中的Drawable(三)
  • Java面向对象(二)
  • 【spring】bean的生命周期
  • 【css3】浏览器内核及其兼容性
  • github指令
  • leetcode388. Longest Absolute File Path
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • npx命令介绍
  • Python打包系统简单入门
  • use Google search engine
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 构建工具 - 收藏集 - 掘金
  • 关于Flux,Vuex,Redux的思考
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • - 转 Ext2.0 form使用实例
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ###C语言程序设计-----C语言学习(3)#
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (42)STM32——LCD显示屏实验笔记
  • (6)添加vue-cookie
  • (MATLAB)第五章-矩阵运算
  • (力扣)1314.矩阵区域和
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .cn根服务器被攻击之后
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core引入性能分析引导优化
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET企业级应用架构设计系列之应用服务器
  • :“Failed to access IIS metabase”解决方法
  • @Autowired和@Resource的区别
  • [《百万宝贝》观后]To be or not to be?
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [autojs]autojs开关按钮的简单使用
  • [C++]类和对象【下】