【python】数据容器:dict(字典、映射)

ops/2024/10/18 19:08:02/

目录

  • 数据容器入门
  • 数据容器:list(列表)
  • list(列表)的遍历
  • 数据容器:tuple(元组)
  • 数据容器:str(字符串)
  • 数据容器的切片
  • 数据容器:set(集合)
  • 数据容器:dict(字典、映射)
  • 数据容器的通用操作
  • 综合案例

数据容器:dict(字典、映射)

  • 字典的定义
  • 字典的常用操作

学习目标

  1. 掌握字典的定义格式

为什么使用字典

生活中的字典
新华字典。

通过【字】
就能找到对应的【含义】

所以,我们可以认为,生活中的字典就是记录的一堆:
【字】:【含义】
【字】:【含义】

【字】:【含义】

为什么使用字典

Python中字典和生活中字典十分相像:

生活中的字典
【字】:【含义】
【字】:【含义】
可以按【字】找出对应的【含义】


Python中的字典
Key:Value
Key:Value
可以按【Key】找出对应的【Value】

为什么使用字典

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

姓名成绩
王力宏77
周杰伦88
林俊杰99

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

使用字典最为合适:

python">{"王力宏": 99,"周杰伦": 88,"林俊杰": 77
}

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

字典的定义

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

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

演示:

python"># 定义字典
my_dict1 = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}# 定义空字典
my_dict2 = {}
my_dict3 = dict()
print(f"字典1的内容是:{my_dict1},类型:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型:{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3},类型:{type(my_dict3)}")# 定义重复Key的字典
my_dict1 = {"王力宏": 99, "王力宏": 88, "林俊杰": 77}
print(f"重复key的字典的内容是:{my_dict1}")

输出结果:

python">字典1的内容是:{'王力宏': 99, '周杰伦': 88, '林俊杰': 77},类型:<class 'dict'>
字典2的内容是:{},类型:<class 'dict'>
字典3的内容是:{},类型:<class 'dict'>
重复key的字典的内容是:{'王力宏': 88, '林俊杰': 77}

字典数据的获取

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

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

python"># 语法,字典[Key]可以取到对应的value
stu_score = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}
print(stu_score["王力宏"]) # 结果:99
print(stu_score["周杰伦"]) # 结果:88
print(stu_score["林俊杰"]) # 结果:77

演示:

python"># 从字典中基于Key获取Value
my_dict1 = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}
score = my_dict1["王力宏"]
print(f"王力宏的考试分数是:{score}")
score = my_dict1["周杰伦"]
print(f"周杰伦的考试分数是:{score}")

输出结果是:

python">王力宏的考试分数是:99
周杰伦的考试分数是:88

字典的嵌套

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

那么,就表明,字典是可以嵌套的

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

姓名语文数学英语
王力宏776633
周杰伦888655
林俊杰999666
python">{"姓名":{"语文": 77,"数学": 66,"英语": 33}
}

演示:

python"># 定义嵌套字典
stu_score_dict = {"王力宏":{"语文": 77,"数学": 66,"英语": 33}, "周杰伦":{"语文": 88,"数学": 86,"英语": 55}, "林俊杰":{"语文": 99,"数学": 96,"英语": 66}
}
print(f"学生的考试信息是:{stu_score_dict}")# 从嵌套字典中获取数据
# 看一下周杰伦的语文分数是:
score = stu_score_dict["周杰伦"]["语文"]
print(f"周杰伦的语文分数是:{score}")
score = stu_score_dict["林俊杰"]["英语"]
print(f"林俊杰的英语分数是:{score}")

输出结果:

python">学生的考试信息是:{'王力宏': {'语文': 77, '数学': 66, '英语': 33}, '周杰伦': {'语文': 88, '数学': 86, '英语': 55}, '林俊杰': {'语文': 99, '数学': 96, '英语': 66}}
周杰伦的语文分数是:88
林俊杰的英语分数是:66

总结:

  1. 为什么使用字典

字典可以提供基于 Key 检索 Value 的场景实现
就像查字典一样

  1. 字典的定义语法
python"># 定义字典字面量
{key: value, key: value, ......, key: value}
# 定义字典变量
my_dict = {key: value, key: value, ......, key: value}
# 定义空字典
my_dict = {}     # 空字典定义方式1
my_dict = dict() # 空字典定义方式2
  1. 字典的注意事项
  • 键值对的 Key 和 Value 可以是任意类型(Key不可为字典)
  • 字典内 Key 不允许重复,重复添加等同于覆盖原有数据
  • 字典不可以使用下标索引,,是通过 Key 检索 Value

http://www.ppmy.cn/ops/126540.html

相关文章

G-Set(增长集合,Grow-Only Set)

一、概念 G-Set&#xff08;增长集合&#xff0c;Grow-Only Set&#xff09;是一种冲突自由复制数据类型&#xff08;Conflict-Free Replicated Data Type, CRDT&#xff09;&#xff0c;用于在分布式系统中同步和合并数据&#xff0c;而不需要中央协调器。G-Set 支持两种操作…

LLM - 使用 Neo4j 可视化 GraphRAG 构建的 知识图谱(KG) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142938982 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Neo4j …

深入了解React 工作原理是什么

前端面试题包括ECMScript,TypeScript,Nodejs,React,Webgl,Webpack,Threejs等还在整理中&#xff0c;在线地址前端面试题&#xff0c;源码地址大家多多支持才有动力给大家分享更多好的面试题。 React 的工作原理基于以下几个关键概念&#xff1a;虚拟 DOM&#xff08;Virtual D…

@PostConstruct和afterPropertiesSet方法执行多次的原因

近日&#xff0c;遇到一个问题&#xff0c;PostConstruct方法会莫名执行多次&#xff0c;单看代码看不出问题&#xff0c;印象中也只会在bean初始化的时候执行一次而已。 然后问AI&#xff0c;问百度&#xff0c;没找到原因。 后面自己猜测&#xff08;现在都是面向猜测编程&am…

大数据治理:定义、重要性及实践

大数据治理&#xff1a;定义、重要性及实践 引言 大数据治理是当代企业信息管理和数据管理的重要环节&#xff0c;它涉及到数据的获取、处理、存储、安全、质量、生命周期管理等方方面面。随着信息技术的迅猛发展和数据量的爆炸式增长&#xff0c;大数据治理已经成为企业提升…

Vue 3 中的状态管理:深入探讨 Vuex 和 Pinia 的比较与最佳实践

文章目录 1. 引言2. Vuex 的使用及其状态管理模型2.1 Vuex 的核心概念2.2 Vuex 的优点与局限性 3. Pinia 的特点及与 Vuex 的比较3.1 Pinia 的核心特点3.2 Pinia 与 Vuex 的主要区别 4. 如何在 Vue 3 中实现状态管理的最佳实践4.1 小型应用中的最佳实践4.2 大型应用中的最佳实践…

python多线程lock使用方法进行文件锁定

如果写文件想让这个线程写的时候&#xff0c;别的线程不会干扰写&#xff0c;也就是不中间插内容 需要使用thread.lock方法 代码&#xff1a; import threading import datetime import random from queue import Queue lockthreading.Lock() def writelog():lock.acquire()w…

Java中数组的定义与使用

1. 数组的基本概念 1.1 什么是数组 数组的定义&#xff1a;一个相同元素的集合 在java中&#xff0c;包含6个整形类型元素的数组 数组中存放的元素其类型相同数组的空间是连在一起的每个空间有自己的编号&#xff0c;其实位置的编号为0&#xff0c;即数组的下标。 那在程序中如…