【Python】什么是字典(Dictionary)?
什么是字典(Dictionary)?
字典(Dictionary)是 Python 中一种 可变(mutable)的数据结构,用于存储键值对(key-value pairs)。字典通过 键(key)来快速查找 值(value)。与列表或元组不同,字典是通过键来访问值,而不是通过索引。
字典在很多编程语言中都有类似的数据结构(比如哈希表、关联数组等)。
字典的特点:
- 无序:字典中的元素是无序的(直到 Python 3.7,字典元素是按插入顺序存储的,但这不是字典的核心特性)。你不能像列表一样通过索引访问字典中的元素。
- 键值对:字典中的每个元素是一个键值对,即每个键对应一个值。
- 唯一键:字典中的键是唯一的,不能重复。如果使用相同的键赋值,原有的值会被新值覆盖。
- 可变:字典是可变的,可以添加、删除或更新键值对。
创建字典
字典可以通过花括号
{}来创建,键和值之间用冒号:分隔,多个键值对之间用逗号,分隔。
示例:
# 创建一个字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}# 创建一个空字典
empty_dict = {}# 创建一个包含不同数据类型的字典
person = {"name": "Bob", "age": 30, "is_student": False, "courses": ["Math", "Science"]}
访问字典的元素
可以通过字典的 键 来访问对应的值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}# 通过键访问值
print(my_dict["name"]) # 输出 Alice
print(my_dict["age"]) # 输出 25
常见的字典操作
添加/更新键值对: 如果键已存在,值会被更新;如果键不存在,则会添加新的键值对。
my_dict = {"name": "Alice", "age": 25}# 添加新的键值对
my_dict["city"] = "New York"# 更新已有的键值对
my_dict["age"] = 26print(my_dict) # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York'}
删除键值对: 使用
del关键字或pop()方法删除键值对。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}# 使用 del 删除键值对
del my_dict["city"]# 使用 pop() 删除键值对
age = my_dict.pop("age") # 删除并返回键 "age" 对应的值print(my_dict) # 输出 {'name': 'Alice'}
print(age) # 输出 25
查看所有的键、值和键值对:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}print(my_dict.keys()) # 输出 dict_keys(['name', 'age', 'city'])
print(my_dict.values()) # 输出 dict_values(['Alice', 25, 'New York'])
print(my_dict.items()) # 输出 dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
keys():返回字典中所有的键。values():返回字典中所有的值。items():返回字典中所有的键值对。
字典的查找操作:
my_dict = {"name": "Alice", "age": 25}# 使用 get() 方法查找键值对
print(my_dict.get("name")) # 输出 Alice
print(my_dict.get("city", "Unknown")) # 输出 Unknown(因为 "city" 不在字典中)
get():通过键查找对应的值。如果键不存在,可以设置一个默认值。
字典的清空: 使用 clear() 方法可以清空字典中的所有元素。
my_dict = {"name": "Alice", "age": 25}
my_dict.clear()
print(my_dict) # 输出 {}
字典的长度: 使用 len() 函数获取字典中的键值对个数。
my_dict = {"name": "Alice", "age": 25}
print(len(my_dict)) # 输出 2
字典的应用场景
- 存储和查找:字典常用于需要通过唯一标识符(键)快速查找值的场景,例如通过学生 ID 查找学生信息,或者存储配置信息。
- 数据映射:字典非常适合存储映射关系,比如把国家名称映射到其首都,或把用户名映射到用户的个人资料。
- JSON 数据:字典的结构与 JSON 格式非常相似,Python 中的字典通常用于表示从 JSON 格式转换来的数据。
字典的优缺点
优点:
- 查找速度快:字典使用哈希表实现,查询操作通常具有常数时间复杂度
O(1),比列表等其他数据结构要高效。- 灵活性高:字典的键可以是任何不可变类型(如字符串、数字、元组),而值可以是任意类型的数据。
缺点:
- 无序:字典中的元素是无序的,虽然 Python 3.7+ 中保持了插入顺序,但不能像列表一样按顺序访问元素。
- 占用内存较大:字典相比列表会占用更多的内存,因为它需要维护哈希表。
总结:
字典是一个非常强大且灵活的数据结构,它以 键值对 的形式存储数据,通过 键 来访问对应的 值。在需要通过唯一标识符快速查找数据的场景中,字典是非常合适的选择。
相关文章:
【Python】什么是字典(Dictionary)?
什么是字典(Dictionary)? 字典(Dictionary)是 Python 中一种 可变(mutable)的数据结构,用于存储键值对(key-value pairs)。字典通过 键(key&…...
Web安全 - API 成批分配漏洞的四种修复方案
文章目录 概述危害修复建议与实施方案解决方案 1:手动绑定数据解决方案 2:使用 DTO 进行数据过滤解决方案 3:启用字段白名单解决方案 4:验证输入数据模式 验证修复有效性小结 概述 批量分配漏洞(Mass Assignment&#…...
计算机网络实验室建设方案
一、计算机网络实验室拓扑结构 计算机网络综合实验室解决方案,是面向高校网络相关专业开展教学实训的综合实训基地解决方案。教学实训系统采用 B/S架构,通过公有云教学实训平台在线学习模式,轻松实现网络系统建设与运维技术的教学…...
ubuntu20.04 调试bcache源码
搭建单步调试bcache的环境,/dev/sdb作为backing dev, /dev/sdc作为cache dev。 一、宿主机环境 1)安装ubuntu 20.04 : 参考ubuntu20.04 搭建kernel调试环境第一篇--安装系统_ubuntu kernel-CSDN博客安装,其中的第六…...
xss csrf怎么预防?
一、XSS(跨站脚本攻击)预防 XSS 是指攻击者向目标网站注入恶意脚本,从而在用户浏览器中执行。 1. 输入过滤 清理用户输入: 拦截或清理HTML特殊字符(如 <, >, , ", &)。使用安全库&#x…...
near-synonym反义词生成(2):Prompt +Bert-MLM(FT)
near-synonym之反义词生成方法二 near-synonym, 中文反义词/近义词/同义词(antonym/synonym)工具包. 方法一为(neg_antonym): Word2vec -> ANN -> NLI -> Length 方法二为(mlm_antonym): Prompt Bert-MLM(FT) Beam-Search 项目地址 github: https://github.com/yon…...
【服务器项目部署】⭐️将本地项目部署到服务器!
目录 🍸前言 🍻一、服务器选择 🍹 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 🍸三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 🍹四、测试 🍸前言 小伙伴们大家好…...
Neo4j Desktop无法打开
解决方案——断网 9号——周一早上就开始打不开,后面去他官网找解决方案,看他们老外解决方法都是重新安装,但是都没彻底解决,我试着重新下载安装桌面版:1.6.1版本,9号晚上7.30的时候经过两次重新安装可以打…...
【编程语言】Kotlin快速入门 - 泛型
Kotlin的泛型与Java十分类似,也是使用这种的语法结构: class Fruit<T> {fun eat(f : T): Unit {println("eat...")}fun <T> buy(p : T): T {return p} }泛型限制 和Java一样,Kotlin也允许泛型是某个类的子类 fun &l…...
【PostgreSQL】入门篇——在不同操作系统上安装 PostgreSQL
PostgreSQL在 Windows、macOS 和 Linux(以 Ubuntu 为例)的安装步骤,以及可能出现的问题和解决办法。 一、在 Windows 上安装 PostgreSQL 1. 下载 PostgreSQL 安装程序 访问 PostgreSQL 官方网站:PostgreSQL Downloads点击“Dow…...
【Docker】部署MySQL容器
关于docker,Windows上使用Powershell/CMD执行指令,Linux系统直接使用终端执行指令。 拉取MySQL 也可以跳过拉取步骤,直接run,这样本地容器不存在的话,会自动拉取最新/指定的版本。 # 默认拉取最新版本 docker pull …...
mysql9.0windows安装
第一步下载 官网地址:https://dev.mysql.com/downloads/mysql/ 点击后,选择不登录下载 第二步安装 双击下载的msi文件进行安装。打开后页面如下,选择安装类型,选择自定义安装。点击Next下一步。 自行选择安装目录 选好后点击…...
word中文献引用[]符号的上下标格式修改
word中文献引用[]符号的上下标格式修改 百度网址 1、查找打开使用通配符,输入[[][0-9]{1,2}[]],即可匹配所有的字[1],[12]这些字符,然后鼠标点击替换为的空白处,再点击特殊格式–>“字体”,选中上标,最…...
计算机毕设-基于springboot的游戏创意工坊与推广平台的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...
kafka的备份策略:从备份到恢复
文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言:Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进…...
【畅购商城】微信支付之支付回调和支付状态
目录 Nuxt.js IP 启动 支付回调 回调接口 后端实现 查看支付状态 后端实现 前端实现 前置技术:RabbitMQ 更新订单状态 Nuxt.js IP 启动 "config": {"nuxt": {"host": "0.0…...
【Compose multiplatform教程18】多平台资源的设置和配置
要正确配置项目以使用多平台资源,请执行以下操作: 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录(例如,深色 UI 主题或本地化字符串的不同图像)。 依赖项和目录设置 要访问多平台项目中的资源…...
MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发
MTK6765安卓核心板是基于联发科高效八核处理器平台开发的一款强大硬件解决方案。这款核心板的核心是采用12纳米工艺打造的MTK6765 CPU,具备四个主频高达2.3GHz的CORTEX-A53核心和四个主频为1.8GHz的CORTEX-A53核心,提供了卓越的处理性能。用户可以根据需…...
conda常用维护命令
文章目录 1. 初始化和更新 Conda更新 Conda初始化 Conda(如果需要) 2. 管理环境创建新环境激活环境停用当前环境列出所有环境删除环境 3. 管理包安装包卸载包更新包更新所有包查找包列出已安装包 4. 导入导出环境导出环境配置从文件创建环境 5. 管理通道…...
Html——10 关键字和描述
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
