Python学习——【4.6】数据容器:dict 字典、映射

news/2024/9/23 13:52:21/

文章目录

  • 【4.6】数据容器:dict 字典、映射
    • 一、字典的定义
    • 二、字典的常用操作
    • 三、字典的遍历
    • 四、字典的特点

【4.6】数据容器:dict 字典、映射

一、字典的定义

为什么使用字典

  以生活中的新华字典举例。它的功能是,让我们通过【字】,就能找到对应的【含义】

  所以,我们可以认为,生活中的字典,就是一系列的:

【字】:含义
【字】:含义
【字】:含义
...
【字】:含义

  Python中的字典和生活中实际的字典很相似。它的功能是,让我们通过【Key】,找出对应的【Value】

python"># Python中的字典
Key: Value
Key: Value
...
Key: Value

  老师有一份名单,记录了学生的姓名和考试成绩。

姓名成绩
张三77
李四88
王五99

  现在需要将其通过Python录入至程序中,并可以通过学生姓名检索学生的成绩。

  使用字典最为合适:

python">{"张三": 77,"李四": 88,"王五": 99
}

  可以通过Key(学生姓名),取到对应的Value(考试成绩)。

  综上,为什么使用字典?

  答:使用字典,可以实现用Key取出Value的操作

字典的定义

  字典的定义,同样使用{},不过存储的元素是一个个的键值对,如下:

python"># 定义字典字面量
{key: value, key: value, ..., key: value}# 定义字典变量
my_dict = {key: value, key: value, ..., key: value}# 定义空字典
my_dict = {}  # 方式1
my_dict = dict()  # 方式2

  注意,字典内Key不允许重复,若重复,则检索时返回的是位于最后边的Key的Value值。(很好理解,字典里有两个相同的字,但是是不同的释义,我查字典的时候该认准哪个?)

字典数据的获取

  字典同集合一样,不可以使用下标索引。

  但是字典可以通过Key值来取得对应的Value。

python"># 语法
# 字典[key] 可以取到对应的 Value
stu_score = {"张三": 77, "李四": 88, "王五": 99}
print(stu_score["张三"])  # 77
print(stu_score["李四"])  # 88
print(stu_score["王五"])  # 99

字典的嵌套

  字典的Key和Value可以是任意数据类型。(注意:Key不可为字典)

  这就表明,字典是可以嵌套的。

  需求如下:记录学生各科的考试信息。

姓名语文数学英语
张三776633
李四888655
王五999666
python"># 定义嵌套字典
stu_score_dict = {"张三": {"语文": 77,"数学": 66,"英语": 33},"李四": {"语文": 88,"数学": 86,"英语": 55},"王五": {"语文": 99,"数学": 96,"英语": 66}
}print(stu_score_dict["张三"]["语文"])  # 77

二、字典的常用操作

image-20240923124331985

  • 新增元素
python"># 语法
字典[Key] = Value

  字典被修改,新增了元素。

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}# 新增stu04的成绩
stu_score["stu04"] = 66
print(stu_score)
  • 更新元素
python"># 语法
字典[Key] = Value

  字典被修改,元素被更新。

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}# 更新stu02的成绩
stu_score["stu02"] = 66
print(stu_score)

  注意:虽然语法上来看都是字典[Key] = Value,但区别在于,Key若是已存在的,则为更新操作;Key若是未存在的,则为新增操作。(因为字典里的Key是不可重复的)

  • 删除元素
python"># 语法
字典.pop(Key)

  获得指定Key的Value,同时字典被修改,其中指定Key的数据被删除。

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}value = stu_score.pop("stu02")
print(value)  # 88
print(stu_score)  # {'stu01': 77, 'stu03': 99}
  • 清空字典
python"># 语法
字典.clear()

  字典被修改,元素被清空。

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}stu_score.clear()
print(stu_score)  # {}
  • 获取全部Key
python"># 语法
字典.keys()

  得到字典中的全部Key。(可以用来做字典遍历)

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}keys = stu_score.keys()
print(keys)  # dict_keys(['stu01', 'stu02', 'stu03'])
  • 统计字典内的元素数量
python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}num = len(stu_score)
print(num)  # 3

三、字典的遍历

方式1:借助“获取全部key”的功能

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}keys = stu_score.keys()
print(keys)  # dict_keys(['stu01', 'stu02', 'stu03'])for k in keys:print(f"字典的key是:{k}")print(f"字典的value是:{stu_score[k]}")

方式2:直接对字典进行for循环

  对字典进行for循环,每一个取出的临时变量都是字典的一个key。

python">stu_score = {"stu01": 77,"stu02": 88,"stu03": 99
}for k in stu_score:print(f"字典的key是:{k}")print(f"字典的value是:{stu_score[k]}")

  字典不支持下表索引,所以也不能使用while循环做遍历。

四、字典的特点

  字典有如下特点:

  • 可以容纳多个数据;
  • 可以容纳不同类型的数据;
  • 每一份数据都是KeyValue键值对;
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖);
  • 不支持下标索引;
  • 可以修改;
  • 支持for循环。

http://www.ppmy.cn/news/1529343.html

相关文章

Flutter Error: Type ‘UnmodifiableUint8ListView‘ not found

问题描述 原本我在Mac开发的项目,现在win10运行时报如下错误: ../../../AppData/Local/Pub/Cache/hosted/pub.dev/win32-3.1.4/lib/src/guid.dart:31:9: Error: Type UnmodifiableUint8ListView not found. final UnmodifiableUint8ListView bytes; ^^…

音乐项目,总结

今天的写的思路都挺简单的但是比较繁琐&#xff0c;这个查找&#xff0c;传文件的话可以了&#xff0c;但是没有用分片传送&#xff0c;然后在写音乐播放的处理&#xff0c;<歌单&#xff0c;二级评论&#xff0c;歌曲歌词滚轮播放>三个还没有实现&#xff0c;时间挺紧张…

python基础(二) 包和import

包的创建 文件创建命令 在 Django 中&#xff0c;python manage.py startapp first_app 这一行命令的作用是创建一个新的应用&#xff08;app&#xff09;&#xff0c;名为 first_app。在 Django 项目中&#xff0c;"app" 是实现某些功能模块的单独部分&#xff0c…

测试工具笔记

性能测试是软件测试中非常重要的一部分&#xff0c;它可以帮助识别软件在高负载条件下的性能瓶颈。市面上有许多性能测试工具&#xff0c;它们各有特点和优势。以下是一些流行的性能测试工具&#xff1a; 1. LoadRunner&#xff1a; 由Micro Focus提供&#xff0c;是一个业界广…

nodejs基于vue+express度假村旅游管理系统设计与实现7t82p

目录 功能介绍数据库设计具体实现截图技术栈技术论证解决的思路论文目录核心代码风格详细视频演示源码获取 功能介绍 实现了一个完整的农家乐系统&#xff0c;其中主要有用户表模块、关于我们模块、收藏表模块、公告信息模块、酒店预订模块、酒店信息模块、景区信息模块、景区…

云计算和虚拟化技术 背诵

https://zhuanlan.zhihu.com/p/612215164 https://zhuanlan.zhihu.com/p/612215164 云计算是指把计算资源、存储资源、网络资源、应用软件等集合起来&#xff0c;采用虚拟化技术 &#xff0c;将这些资源池化&#xff0c;组成资源共享池&#xff0c;共享池即是“云”。 云计算…

VM+Ubuntu16.04硬盘扩容

步骤&#xff1a; 用df -h查看自己虚拟机的硬盘空间使用情况在虚拟机下安装gparted软件备用 sudo apt-get install gparted在VM的界面或者Windows终端修改虚拟机硬盘大小回到虚拟机的gparted软件里&#xff0c;修改分区&#xff0c;先删除原有的逻辑分区和扩展分区&#xff0c…

【FPGA】FPGA芯片结构

目录 1 可编程输出/输出单元&#xff08;IOB&#xff09;2 可配置逻辑块&#xff08;CLB&#xff09;3 数字时钟管理模块&#xff08;DCM&#xff09;4 嵌入式块存储器&#xff08;BRAM&#xff09;5 布线资源6 内嵌功能模块&#xff08;专用IP单元&#xff09;6.1 PLL&#xf…