12. 字典dict类型详解

news2024/11/16 4:40:54

1. 基础知识

(1) 字典(dictionary)是Python中另一个非常有用的内置数据类型。
(2) 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
(3) 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key):值(value)的集合。
(4) 键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的
(5) 创建空字典:{}。
(6) 构造函数 dict() 可以直接从键值对序列中构建字典。
(7) 说白了,字典就是众多键值对的一个集合,类似C++中的map映射。

(8) 键值对格式:key:value,key是键,value是值,这样一个组合就是键值对。
(9) 字典格式:d = {key1 : value1, key2 : value2, key3 : value3 }
(10) 成员资格运算符:key in dict,判断指定的key是否在字典dict中存在。

d = {'num': 101, 'name': 'Zhang'}
print('num' in d)
print('age' in d)

在这里插入图片描述

2. 创建字典的几种形式

(1) 使用{}字面形式直接创建

d = {'num': 101, 'name': 'Zhang'}
print(d)

(2) 使用[]形式进行创建

d = {}            # 创建一个空字典
d['one']= 111     # 添加键值对
d[222]= "Me"      # 添加键值对
print(d)

在这里插入图片描述

(3) 使用dict()函数进行创建

items = [("name", "Zhang"), ("age", "24")]
print(dict(items))
print(dict(name='Wang', age=25))

在这里插入图片描述

3. 字典值的访问

(1) 通过[]的形式来访问键所对应的值

d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
# 获取键num, name分别对应的值
print("d['num'] is: ", d['num'])
print("d['name'] is: ", d['name'])

在这里插入图片描述
(2) 注意,如果用字典里没有的键访问数据,则会发生报错

# 企图访问一个不存在的键所对应的值, 将发生报错
d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
print("d['xx'] is: ", d['xx'])

在这里插入图片描述

4. 字典值的修改

d = {'num': 101,}
print('修改前:> ', d, id(d))
d['num'] = 102
d['name'] = 'Zhang'
print('修改后:> ', d, id(d))

在这里插入图片描述

5. 字典值的删除

(1) 删除指定的键

Dict = {'num': 101, 'name': 'Zhang'}

print('删除前:> ', Dict, id(Dict))
del Dict['num']	# 删除键`num`
print('删除后:> ', Dict, id(Dict))

在这里插入图片描述
(2) 删除整个字典

Dict = {'num': 101, 'name': 'Zhang'}

print('删除前:> ', Dict, id(Dict))
del Dict    # 删除整个字典
print('删除后:> ', Dict, id(Dict)) # 因为字典已被删除, 所以此处打印会报错

在这里插入图片描述

6. 字典的清空

清空,仅仅是将字典里的所有键值对给删除了,此时相当于是一个空的字典
关键API:clear()

Dict = {'num': 101, 'name': 'Zhang'}

print('清空前:> ', Dict, id(Dict))
Dict.clear()	# 调用clear()函数
print('清空后:> ', Dict, id(Dict))

Dict['age'] = 18    # 往字典里追加一个键值对
print(Dict)

在这里插入图片描述

7. 字典的迭代

d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
# (1)遍历key
for key in d:
    print(key, 'to', d[key], end=" ,")
print("")

# (2)同时取得key-value
for key,value in d.items():
    print(key, 'to', value, end=" ,")

在这里插入图片描述

8. 字典的其他一些特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行
(1) 不允许同一个键出现两次,键在字典中具有唯一性。创建时如果同一个键被赋值两次,那么前一个值将被后一个值给覆盖。

Dict = {'num': 101, 'name': 'Zhang'}
# 给同一个键赋值两次, 则前面的值将被后面的值给覆盖
Dict['age'] = 18
Dict['age'] = 19

print(Dict) 

在这里插入图片描述

(2) 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

Dict = {['Name']: "TaoBao", 'Age': 18}
print(Dict)

在这里插入图片描述

9. 内置函数&方法

(1) 内置函数
len(dict):计算字典的个数;
str(dict):输出字典,以字符串的形式表示;

Dict = {'num': 101, 'name': 'Zhang'}
print(str(Dict))
print(type(str(Dict)))

在这里插入图片描述

(2) 内置方法
dict.clear():清空整个字典(删除整个字典内的所有键值对)
dict.copy():返回一个字典的浅拷贝
dict.get(key, default=None):返回指定键所对应的值,如果不存在,就返回default设置的默认值
。。。。
更多内置方法参考 官网API。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175274.html

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

相关文章

Flowable进阶学习(三)流程、流程实例挂起与激活;启动、处理、结束流程的原理以及相关表结构与变动

文章目录流程挂起与激活流程实例挂起与激活启动、处理、结束流程的原理一、启动流程的原理启动一个流程实例时涉及到的表及表结构:ACT_RU_EXECUTION 运行时流程执行实例ACT_RU_IDENTITYLINK 运行时用户关系信息ACT_RU_TASK 运行时任务表ACT_RU_VARIABLE 运行时变量表二、处理流…

过滤器Filter总结

过滤器Filter1. 简介2. 快速入门3. 执行流程4. 使用细节4.1 拦截路径4.2 过滤器链5. 案例5.1 需求5.2 LoginFilter1. 简介 过滤器是JavaWeb三大组件之一(Servlet、Filter,Listner); 作用: 把对资源(servl…

Ubuntu22.04 安装 ssh

文章目录Ubuntu22.04 安装 ssh一、 环境配置二、 启动远程连接三、 开放端口四、 远程连接Ubuntu22.04 安装 ssh 一、 环境配置 安装 Ubuntu 系统后,我们首先需要配置管理员 root 用户: sudo passwd root然后,进行软件源的更换&#xff1a…

14 Java集合(Map集合+HashMap+泛型使用+集合面试题)

集合14.11 Map集合14.11.1 Map集合特点14.11.2 Map集合体系结构14.12 HashMap14.12.1 HashMap基本使用14.12.2 HashMap实际应用14.12.3 HashMap练习14.12.4 HashMap底层实现原理14.12.5 put的过程原码14.12.6 resize过程原码14.12.7 get的过程原码14.13 HashTable14.14 泛型高级…

5-1中央处理器-CPU的功能和基本结构

文章目录一.CPU的功能二.CPU的基本结构(一)运算器1.运算器的基本组成2.专用数据通路方式3.CPU内部单总线方式(二)控制器1.基本组成2.实现过程(三)寄存器一.CPU的功能 中央处理器(CPU&#xff0…

并查集的入门与应用

目录 一、前言 二、并查集概念 1、并查集的初始化 2、并查集的合并 3、并查集的查找 4、初始化、查找、合并代码 5、复杂度 二、路径压缩 三、例题 1、蓝桥幼儿园(lanqiaoOJ题号1135) 2、合根植物(2017年决赛,lanqiaoO…

SQL注入篇 - 布尔盲注及延时注入

数据来源 盲注 什么是盲注: 布尔盲注原理 布尔盲注流程 手工盲注思路(以下的文章参考:DVWA-sql注入(盲注) - N0r4h - 博客园) 手工盲注的过程,就像你与一个机器人聊天,这个机器人知…

DGSEA | GSEA做完了不要停,再继续比较一下有意义的通路吧!~

1写在前面 GSEA大家都会用了,但GSEA也有它自己的缺点,就是不能比较两个基因集或通路的富集情况。🤒 今天介绍一个Differential Gene Set Enrichment Analysis (DGSEA),可以量化两个基因集的相对富集程度。😉 2用到的包…

Java中的位运算及其常见的应用

文章目录1、位运算1.1 原码、反码、补码1.2 位运算符2、位运算的应用2.1 取模运算2.2 奇偶性判断2.3 交换变量的值2.4 加法运算1、位运算 1.1 原码、反码、补码 计算机中所有数据的存储和运算都是以二进制补码的形式进行的。a —> 97,A —> 65,‘…

深入学习Vue.js(十二)编译器

模板DSL的编译器 1.编译器概述 编译器实际上是一段程序,他用来将一种语言A翻译为另一种语言B。其中,A被称为源代码,B被称为目标代码。编译器将源代码翻译为目标代码的过程被称为编译。完整的编译过程通常包含词法分析、语法分析、语义分析、…

软件测试——测试用例

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 测试用例的设计方法 等价类 边界值 错误猜测法 判定表法(使用于关系组合) 设计步骤 具体例子 正交法 场景设计法…

Redis相关简介

1. Redis 简介 在这个部分,我们将学习以下3个部分的内容,分别是: ◆ Redis 简介(NoSQL概念、Redis概念) ◆ Redis 的下载与安装 ◆ Redis 的基本操作 1.1 NoSQL概念 1.1.1 问题现象 在讲解NoSQL的概念之前呢&am…

8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法

文章目录3 综合型分析方法3.1 相关性分析法3.1.1 直接相关3.1.2 间接相关3.2标签分析法3.3 MECE法4 如何使用九大方法本文来源,为接地气的陈老师的知识星球,以及付同学的观看笔记。3 综合型分析方法 3.1 相关性分析法 相关性分析法:寻找指标…

ROS2机器人编程简述humble-第二章-Executors .3.5

ROS2机器人编程简述humble-第二章-Parameters .3.4由于ROS2中的节点是C对象,因此一个进程可以有多个节点。事实上,在许多情况下,这样做是非常有益的,因为当通信处于同一进程中时,可以通过使用共享内存策略来加速通信。…

freeglut 在mfc 下的编译

freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本,glut 应用广阔,但比较陈旧,很久没有更新。 我原来的opengl 用的是glut, 想更新到64位版本,怎么也找不到合适的下载。最后找到完全替代版本freeglut。fre…

【Linux】线程概念 | 互斥

千呼万唤始出来,终于到多线程方面的学习了! 所用系统Centos7.6 本文的源码👉【传送门】 最近主要是在我的hexo个人博客上更新,csdn的更新会滞后 文章目录1.线程的概念1.1 执行流1.2 线程创建时做了什么?1.3 内核源码中…

每刻和金蝶云星空接口打通对接实战

接通系统:每刻3000中大型企业在用,新一代业财税一体化解决方案提供商。旗下拥有每刻报销、每刻档案、每刻云票、每刻财务共享云平台等,助力企业实现财务数字化转型。对接系统:金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万…

算法刷题打卡第72天:最少侧跳次数

最少侧跳次数 难度:中等 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacle…

Cheat Engine7.4 训练教程(非常详细)

目录 一.CE是干什么的? 二.怎么获得? 三.训练教程 步骤 1: 加载进程 步骤 2: 精确值扫描 步骤 3: 未知的初始值 步骤 4: 浮点数 步骤 5: 代码查找 步骤 6: 指针 步骤 7: 代码注入 步骤 8: 多级指针 提示:这篇文章不是一天写完的&a…