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

news2024/9/23 23:17:32

文章目录

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

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

一、字典的定义

为什么使用字典

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

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

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

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

# Python中的字典
Key: Value
Key: Value
...
Key: Value

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

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

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

  使用字典最为合适:

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

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

  综上,为什么使用字典?

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

字典的定义

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

# 定义字典字面量
{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。

# 语法
# 字典[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
# 定义嵌套字典
stu_score_dict = {
    "张三": {
        "语文": 77,
        "数学": 66,
        "英语": 33
    },
    "李四": {
        "语文": 88,
        "数学": 86,
        "英语": 55
    },
    "王五": {
        "语文": 99,
        "数学": 96,
        "英语": 66
    }
}

print(stu_score_dict["张三"]["语文"])  # 77

二、字典的常用操作

image-20240923124331985

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

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

stu_score = {
    "stu01": 77,
    "stu02": 88,
    "stu03": 99
}

# 新增stu04的成绩
stu_score["stu04"] = 66
print(stu_score)
  • 更新元素
# 语法
字典[Key] = Value

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

stu_score = {
    "stu01": 77,
    "stu02": 88,
    "stu03": 99
}

# 更新stu02的成绩
stu_score["stu02"] = 66
print(stu_score)

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

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

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

stu_score = {
    "stu01": 77,
    "stu02": 88,
    "stu03": 99
}

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

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

stu_score = {
    "stu01": 77,
    "stu02": 88,
    "stu03": 99
}

stu_score.clear()
print(stu_score)  # {}
  • 获取全部Key
# 语法
字典.keys()

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

stu_score = {
    "stu01": 77,
    "stu02": 88,
    "stu03": 99
}

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

num = len(stu_score)
print(num)  # 3

三、字典的遍历

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

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。

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.coloradmin.cn/o/2158725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础4-进程2(Linux中的进程状态,R,S,D,T,t,Z,X,僵尸进程,孤儿进程)

上篇文章:Linux基础4-进程1(操作系统,进程介绍,Linux进程相关命令,getpid,fork)-CSDN博客 本章重点: 进程状态相关知识 目录 1. 进程常见的状态 2.普遍的操作系统理解进程状态 3.…

c++263抽象类在继承中的应用

#include<iostream> using namespace std; //计算程序员工资 //1.要求能计算出junior_programmmer mid-programer adv-programmer的工资 //2.要求利用抽象类统一界面 方便程序的扩展 ex&#xff1a;新增计算架构师architect的工资class programmer { public:virtual void…

CTFHub技能树-SQL注入-Cookie注入

使用bp发现cookie的注入点 id1&#xff0c;发现为数字型 首先使用联合查询 id 1 order by 2 id 1 order by 3发现2的时候有回显&#xff0c;而3的时候无回显 Cookie: id-1 union select database(),user() 后面开始库->表->列->数据 Cookie: id-1 union select 1…

WebLogic文件任意上传漏洞CVE-2018-2894

1.环境搭建 cd vulhub-master/weblogic/CVE-2018-2894 docker-compose up -d 2.获取环境后台密码 docker-compose logs | grep password 3.开启web服务测试 设置web服务测试开启:域结构->base-domain->高级 ->启动Web服务测试页 4.修改访问目录 先进入/ws_utc/co…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

每日一练:对称二叉树

101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,n…

对象【JavaScript】

在JavaScript中&#xff0c;对象是一种复合数据类型&#xff0c;它使用花括号 {} 包裹一组键值对。每个键&#xff08;属性名&#xff09;后面跟着一个冒号 : 和对应的值。键通常是字符串&#xff08;或符号&#xff09;&#xff0c;而值可以是任意数据类型。 1. 对象字面…

数据脱敏-快速使用

1.数据脱敏定义 数据脱敏百度百科中是这样定义的&#xff1a; 数据脱敏&#xff0c;指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。 因为在真正的生产环境中,很多数据是不能直接返回,但是我们工作的时候可能经常性的需要返回一些用户信…

公司将被千万美金收购,工程师却误删数据库 —— 没 有 备 份!!!

前些天&#xff0c;Retention 和 RB2B 的 CEO&#xff0c;Adam Robinson&#xff0c;在领英&#xff08;LinkedIn&#xff09;发帖讲了一个恐怖故事。 2021 年 3 月&#xff0c;在他第一个创业公司即将以一千万美金被收购的两周前&#xff0c;他们的一位工程师不小心删除了整个…

M9410A VXT PXI 矢量收发信机,300/600/1200MHz带宽

M9410A PXI 矢量收发信机 -300/600/1200MHz带宽- M9410A VXT PXI 矢量收发信机&#xff0c;300/600/1200MHz带宽支持 5G 的 PXI 矢量收发信机&#xff08;VXT&#xff09;是一个 2 插槽模块&#xff0c;具有 1.2 GHz 的瞬时带宽 主要特点 Keysight M9410A VXT PXIe 矢量收发…

SpringBoot+Vue技术框架开发的ADR智能监测系统源码,Java语言的药品不良反应智能监测系统源代码

系统概述&#xff1a; 药品不良反应是指合格药品在正常用法用量下出现的与用药目的无关的有害反应。药品不良反应智能监测系统是一种用于监测和收集药品在使用过程中发生的不良反应的系统。它基于医院临床数据中心&#xff0c;运用信息技术实现药品不良反应的智能监测、报告管…

46.哀家要长脑子了!

1.435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;动态规划 实际上本质就是找最长的无重叠子序列&#xff0c;那么我们可以遍历这个区间的集合&#xff0c;只要前一个区间的右端点是小于等于后一个区间的左端点&#xff0c;那么这两个区间就不是重…

C:内存函数

目录 前言&#xff1a; 一、memcpy 函数的使用及实现 1、memcpy函数的介绍 1.1 memcpy函数参数解读 2、memcpy函数的使用 3、memcpy函数的模拟实现 二、memmove函数的使用及模拟 1、memmove函数的使用 2、memmove函数的模拟实现 三、memset 函数的使用 1、memset函数的…

mybatis 配置文件完成增删改查(五) :单条件 动态sql查询,相当于switch

文章目录 单条件 动态sql查询写测试方法 疑问总结 单条件 动态sql查询 <select id"selectByConditionBySingle" resultMap"brandResultMap">.select *from tb_brandwhere<choose>/*相当于switch*/<when test"status ! null">…

基于Vision-Board的智能应急环境监测控制小车

目录 1 项目概述 1.1 项目背景 1.2 系统功能介绍 1.2.1 下位机智能小车控制系统 1.2.2 微信小程序App 1.2.3 PC上位机App 1.3 框图介绍 1.3.1 主控板卡 1.3.2 小车控制模块 1.3.3 通信模块 1.4 系统使用的技术要点 2 系统硬件设计 2.1 Version board主控板块系统结…

matlab恢复默认窗口布局

1.点击主页&#xff0c;选择布局 2.选择默认&#xff0c;即可恢复到默认的窗口布局

ollama 部署教程(window、linux)

目录 一、官网 二、安装方式一&#xff1a;window10版本下载 三、安装方式二&#xff1a;linux版本docker 四、 模型库 五、运行模型 六、API服务 七、python调用 ollama库调用 langchain调用 requests调用 aiohttp调用 八、模型添加方式 1.线上pull 2.导入 GGU…

HCIA--实验十九:配置接口DCHP

一、实验内容 1.需求/要求&#xff1a; 通过一台5700交换机和一台PC&#xff0c;通过在交换机的接口上配置接口DHCP来实现PC自动获取ip地址。 二、实验过程 1.拓扑图&#xff1a; 2.步骤&#xff1a; 1.给vlan10配置ip地址&#xff0c;进入vlan10开启接口的DHCP&#xff1…

药用植物的空间多组学:从生物合成途径到工业应用-文献精读51

Spatial multi-omics in medicinal plants: from biosynthesis pathways to industrial applications 药用植物的空间多组学&#xff1a;从生物合成途径到工业应用 摘要 随着分子测序和成像技术的快速发展&#xff0c;药用植物的多组学研究进入了单细胞时代。我们讨论了空间多…

EMT-LTR--学习任务间关系的多目标多任务优化

EMT-LTR–学习任务间关系的多目标多任务优化 title&#xff1a; Learning Task Relationships in Evolutionary Multitasking for Multiobjective Continuous Optimization author&#xff1a; Zefeng Chen, Yuren Zhou, Xiaoyu He, and Jun Zhang. journal&#xff1a; IEE…