【Python】09、字典

文章目录

    • 1. 字典简介
    • 2. 字典的使用
      • 2.1 字典创建
      • 2.2 字典值获取
      • 2.3 字典值修改
      • 2.4 字典的删除
    • 3. 字典的遍历

1. 字典简介

字典(dict)属于一种新的数据结构,称为映射(mapping)。

  • 字典的作用和列表类似,但是查询性能比列表好;
  • 在字典中每个元素都有一个唯一的名字(key),可以通过这个名字进行快速查找指定元素(value),字典也称为键值对(key-value)结构;
  • 字典中可以有多个键值对,每个键值对称为一项(item)

2. 字典的使用

2.1 字典创建

  • 使用 {[key:value,key:value]} 来创建字典,key,value不传时创建的是空字典
d = {} # 创建空字典print(d,type(d))# 结果:
{} <class 'dict'>***Repl Closed***
  • 字典的键可以是任意的不可变对象(int、str、bool、tuple…)
  • 字典的键不能重复,如果重复,后面出现的会替换掉前面的
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}print(d)# 结果:
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male'}***Repl Closed***
  • 使用dict()函数创建字典
    这种方式创建的字典,key都是字符串
d = dict(sort = 1,name = '张三',age = 25)
print(d)# 结果:
{'sort': 1, 'name': '张三', 'age': 25}***Repl Closed***
  • 将一个包含双值子序列的序列转换为字典
    双值序列指的值序列中有且只有两个元素
d = dict([('sort',1),('name','张三'),('age',25)])
print(d)# 结果:
{'sort': 1, 'name': '张三', 'age': 25}***Repl Closed***

2.2 字典值获取

  • 通过 d[key] 的方式获取值
    如果key不存在,则会报 KeyError的错
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}# 根据key获取值
print(d['sort'])
print(d['name'])
print(d['age'])
print(d['sex'])# 结果:
1
李四
25
male***Repl Closed***
  • get(key[,default]) 根据键来获取字典中的值
    如果过去的键在字典中不存在,会返回None,如果default传递了值,key不存在时则返回设置的默认值
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}print(d.get('age'))
print(d.get('add','默认值'))# 结果:
25
默认值***Repl Closed***

2.3 字典值修改

  • 语法:d[key] = value
    当key存在时,将key对应的值修改为value,如果key不存在,则直接在字典中增加
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}d['name'] = '王五'
d['add'] = 'World'print(d)# 结果:
{'sort': 1, 'name': '王五', 'age': 25, 'sex': 'male', 'add': 'World'}***Repl Closed***
  • setdefault(key[,default]) 向字典中添加key-value,这个方法有返回值
    如果key已经存在字典中,则返回key的值,不对字典进行任何操作
    如果key不存在,则向字典中添加这个key,并设置value
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}result = d.setdefault('name','赵六')
print(result)result = d.setdefault('add','world')
print(result)
print(d)# 结果:
李四
world
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male', 'add': 'world'}***Repl Closed***
  • update([other]) 将其它字典中的key-value添加到当前字典中
    注意: 如果两个字典中存在相同key,那么值会被替换
a = {'id':1,'name':'Mike','score':100}
a_2 = {'time':'2025-03','user':'Json'}a.update(a_2)
print('输出a:',a)# 相同 key会被替换
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_2 = {'sort':2,'name':'王五','age':26,'sex':'male'}d.update(d_2)
print('输出d:',d)# 结果:
输出a: {'id': 1, 'name': 'Mike', 'score': 100, 'time': '2025-03', 'user': 'Json'}
输出d: {'sort': 2, 'name': '王五', 'age': 26, 'sex': 'male'}***Repl Closed***

2.4 字典的删除

  • 使用del d[key] 删除字典中key-value
    key不存在时会报错
d = {'sort':1,'name':'张三','age':25,'sex':'male'}del d['sort']
print('输出d:',d)# 结果
输出d: {'name': '张三', 'age': 25, 'sex': 'male'}***Repl Closed***
  • popitem() 随机删除字典中一个键值对,一般都是删除最后一个键值对
  1. 这个方法有返回值,会将删除的key-value作为一个元组返回
  2. 如果字典为空时调用,会报错
d = {'sort':1,'name':'张三','age':25,'sex':'male'}d.popitem()
print('输出d:',d)# 结果
输出d: {'sort': 1, 'name': '张三', 'age': 25}***Repl Closed***
  • pop(key[,default]) 根据key 删除字典中的项
  1. 这个方法有返回值,会将被删除的值返回
  2. 如果key不存在字典中,会报错,如果指定了默认值,key不存在时会返回默认值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}res = d.pop('sort')
res_add =  d.pop('add','默认值')print('输出d:',d)
print('输出res:',res)
print('输出res_add:',res_add)# 结果:
输出d: {'name': '张三', 'age': 25, 'sex': 'male'}
输出res: 1
输出res_add: 默认值***Repl Closed***
  • clear() 清空字典
d = {'sort':1,'name':'张三','age':25,'sex':'male'}d.clear()
print('输出d:',d)# 结果
输出d: {}***Repl Closed***
  • copy() 用于对字典进行浅复制
  1. 复制出来的对象是独立的,修改一个不会影响另外一个
  2. 浅复制会简单的复制对象内部的值,如果字典中的值也是一个可变对象,这个可变对象不会被复制
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_2 = d.copy()print('输出d:',d,id(d))
print('输出d_2:',d_2,id(d_2))# 结果
输出d: {'sort': 1, 'name': '张三', 'age': 25, 'sex': 'male'} 2576443365312
输出d_2: {'sort': 1, 'name': '张三', 'age': 25, 'sex': 'male'} 2576443758976***Repl Closed***
  • len() 获取字典中键值对的个数
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}print(len(d))# 结果:
4***Repl Closed***
  • in 和 not in 检查字典中是否包含指定的键
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}print('字典中是否包含age:','age' in d)
print('字典中是否包含add:','add' in d)# 结果
字典中是否包含age: True
字典中是否包含add: False***Repl Closed***

3. 字典的遍历

  1. keys() 该方法会返回字典的所有key
    这个方法会返回一个序列,序列中会包含序列中所有的键
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_keys = d.keys()print('输出:',d_keys)# 结果:
输出: dict_keys(['sort', 'name', 'age', 'sex'])***Repl Closed***# 遍历获取所有值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}for s in d.keys() : print(d[s])# 结果
1
张三
25
male***Repl Closed***
  1. values() 该方法会返回字典的所有的值
# 遍历获取所有值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}for s in d.values() : print(s)# 结果
1
张三
25
male***Repl Closed***
  1. items() 该方法会返回字典中的所有项,返回形式为序列,序列中包含双值子序列
d = {'sort':1,'name':'张三','age':25,'sex':'male'}for s,v in d.items() : print(s,':',v)# 结果:
sort : 1
name : 张三
age : 25
sex : male***Repl Closed***

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

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

相关文章

【贪心算法4】

力扣452.用最少数量的剪引爆气球 链接: link 思路 这道题的第一想法就是如果气球重叠得越多那么用箭越少&#xff0c;所以先将气球按照开始坐标从小到大排序&#xff0c;遇到有重叠的气球&#xff0c;在重叠区域右边界最小值之前的区域一定需要一支箭&#xff0c;这道题有两…

SGMEA: Structure-Guided Multimodal Entity Alignment

3 Method 3.1 Problem Definition 3.2 Framework Description 总体框架如图2所示&#xff0c;由三个主要部分组成&#xff1a;初始嵌入采集模块、结构引导模块和模态融合模块。 3.3 Initial Embedding Acquisition 3.3.1 Structural Embedding 3.3.2 Relation, Attribute, …

KY-038 声音传感器如何工作以及如何将其与 ESP32 连接

想为您的项目赋予声音感!然后跟着做,因为在这个项目中,我们将连接一个声音传感器,用它构建一些有趣的项目。我们使用的 KY-038 声音传感器使用电容式麦克风来检测声波,这为我们提供了稳定性和可靠性的完美平衡。因此,在本文中,我们决定将 KY-038 传感器与 ESP32 连接,并…

《基于超高频RFID的图书馆管理系统的设计与实现》开题报告

一、研究背景与意义 1.研究背景 随着信息化时代的到来&#xff0c;运用计算机科学技术实现图书馆的管理工作已成为优势。更加科学地管理图书馆会大大提高工作效率。我国的图书管理体系发展经历了三个阶段&#xff1a;传统图书管理模式、现代图书管理模式以及基于无线射频识别&…

[local-file-system]基于服务器磁盘的本地文件存储方案

[local-file-system]基于服务器磁盘的本地文件存储方案 仅提供后端方案 github 环境 JDK11linux/windows/mac 应用场景 适用于ToB业务&#xff0c;中小企业的单体服务&#xff0c;仅使用磁盘存储文件的解决方案 仅使用服务器磁盘存储 与业务实体相结合的文件存储方案&…

P5708 【深基2.习2】三角形面积(洛谷—python)

题目描述 一个三角形的三边长分别是 a、b、c&#xff0c;那么它的面积为 p(p−a)(p−b)(p−c)​&#xff0c;其中 p21​(abc)。输入这三个数字&#xff0c;计算三角形的面积&#xff0c;四舍五入精确到 1 位小数。 输入格式 第一行输入三个实数 a,b,c&#xff0c;以空格隔开…

智慧加油站小程序数据库设计文档

智慧加油站系统 - 数据库与API设计文档 1. 数据库设计 1.1 ER模型 系统的核心实体关系如下&#xff1a; 用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)| | || | vv v …

C++博客分享

本周的一些 C视频分享, 或许后续会做一些内容总结. 博客 Polymorphic, Defaulted EqualityConstexpr factors_ofC26: Removing language featuresBypassing the branch predictor Meeting C 2024 Clean CMake for C (library) developers - Kerstin KellerAn Introduction …

【蓝桥杯每日一题】3.16

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x 目录 3.9 高精度算法 一、高精度加法 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a; 解题代码&#xff1a; 二、高精度减法 题目链接&#xff1a; 题目描述&…

vue 仿deepseek前端开发一个对话界面

后端&#xff1a;调用deepseek的api&#xff0c;所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

SpringMVC(五)拦截器

目录 拦截器基本概念 一 单个拦截器的执行 1 创建拦截器 2 SpringMVC配置&#xff0c;并指定拦截路径。 3 运行结果展示&#xff1a; 二 多个拦截器的执行顺序 三 拦截器与过滤器的区别 拦截器基本概念 SpringMVC内置拦截器机制&#xff0c;允许在请求被目标方法处理的…

Hive SQL 精进系列:PERCENTILE_APPROX 搞定分位数

目录 一、引言二、percentile_approx 函数基础2.1 基本语法参数解释返回值简单示例 三、应用场景3.1 数据分析与报告3.2 数据清洗与异常值检测3.3 性能监控与优化 四、使用注意事项4.1 数据类型要求4.2 精度与性能平衡4.3 空值处理 五、总结 一、引言 百分位数作为一种常用的统…

pytorch快速入门——手写数字分类GPU加速

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; pytorch快速入门——手写数字分类GPU加速 一、tensor1&#…

【开源免费】基于SpringBoot+Vue.JS电商应用系统(JAVA毕业设计)

本文项目编号 T 242 &#xff0c;文末自助获取源码 \color{red}{T242&#xff0c;文末自助获取源码} T242&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

经历过的IDEA+Maven+JDK一些困惑

注意事项&#xff1a;由于使用过程中是IDEA绑定好另外2个工具&#xff0c;所以报错统一都显示在控制台&#xff0c;但要思考和分辨到底是IDEA本身问题导致的报错&#xff0c;还是maven导致的 使用前的配置 编辑期 定义&#xff1a;指的是从open projects开始&#xff0c;到执行…

【推理】大模型ReasonGraph:推理路径的可视化论文及代码分析

ReasonGraph:推理路径的可视化 ReasonGraph demo http://192.168.50.197:5001/ 作者的其他论文 ** ** LLM推理方法的相关工作

学习路之TP6 --重写vendor目录下的文件(服务覆盖command---优点:命令前后一致)

学习路之TP6 --重写vendor目录下的文件 一、新建命令文件&#xff1a;二、复制修改&#xff1a;Server.php三、新建服务类&#xff1a;WorkmanService.php四、注册服务五、运行效果 有需求要重写vendor\topthink\think-worker\src\command\Server.php 以实现修改代码 一、新建命…

【蓝图使用】绘制mesh顶点的法线

文章目录 绘制法线Normal准备工作UE5资源制作蓝图制作 参考 绘制法线Normal 参考[1]打算用蓝图走一遍渲染管线&#xff0c;还是可以的 准备工作 Blender制作一个三个顶点的模型 要不要材质无所谓&#xff0c;就一个三个顶点的mesh即可&#xff0c;参考[2] 找到一个法线贴…

【算法学习之路】10.二叉树

二叉树 前言一.简介二.题目123 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xff0c;其他的也会陆陆续续的更新&#xff0c;希望大家点…

AI软件栈:推理框架(二)-Llama CPP1

Llama CPP的主要构造&#xff0c;GGUF和GGML为两个主要部分&#xff0c;包括模型描述文件和模型参数存储文件 文章目录 GGUF构建图读取权重 GGUF llama.cpp 的作者 Georgi Gerganov 提出的新一代大模型描述文件 GPT-Generated Unified Format&#xff0c;继承自GGML&#xff0…