当前位置: 首页 > news >正文

【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&#xff08;跨站脚本攻击&#xff09;预防 XSS 是指攻击者向目标网站注入恶意脚本&#xff0c;从而在用户浏览器中执行。 1. 输入过滤 清理用户输入&#xff1a; 拦截或清理HTML特殊字符&#xff08;如 <, >, , ", &&#xff09;。使用安全库&#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…...

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 &#x1f378;前言 &#x1f37b;一、服务器选择 &#x1f379; 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 &#x1f378;三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ &#x1f379;四、测试 &#x1f378;前言 小伙伴们大家好…...

Neo4j Desktop无法打开

解决方案——断网 9号——周一早上就开始打不开&#xff0c;后面去他官网找解决方案&#xff0c;看他们老外解决方法都是重新安装&#xff0c;但是都没彻底解决&#xff0c;我试着重新下载安装桌面版&#xff1a;1.6.1版本&#xff0c;9号晚上7.30的时候经过两次重新安装可以打…...

【编程语言】Kotlin快速入门 - 泛型

Kotlin的泛型与Java十分类似&#xff0c;也是使用这种的语法结构&#xff1a; class Fruit<T> {fun eat(f : T): Unit {println("eat...")}fun <T> buy(p : T): T {return p} }泛型限制 和Java一样&#xff0c;Kotlin也允许泛型是某个类的子类 fun &l…...

【PostgreSQL】入门篇——在不同操作系统上安装 PostgreSQL

PostgreSQL在 Windows、macOS 和 Linux&#xff08;以 Ubuntu 为例&#xff09;的安装步骤&#xff0c;以及可能出现的问题和解决办法。 一、在 Windows 上安装 PostgreSQL 1. 下载 PostgreSQL 安装程序 访问 PostgreSQL 官方网站&#xff1a;PostgreSQL Downloads点击“Dow…...

【Docker】部署MySQL容器

关于docker&#xff0c;Windows上使用Powershell/CMD执行指令&#xff0c;Linux系统直接使用终端执行指令。 拉取MySQL 也可以跳过拉取步骤&#xff0c;直接run&#xff0c;这样本地容器不存在的话&#xff0c;会自动拉取最新/指定的版本。 # 默认拉取最新版本 docker pull …...

mysql9.0windows安装

第一步下载 官网地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击后&#xff0c;选择不登录下载 第二步安装 双击下载的msi文件进行安装。打开后页面如下&#xff0c;选择安装类型&#xff0c;选择自定义安装。点击Next下一步。 自行选择安装目录 选好后点击…...

word中文献引用[]符号的上下标格式修改

word中文献引用[]符号的上下标格式修改 百度网址 1、查找打开使用通配符&#xff0c;输入[[][0-9]{1,2}[]]&#xff0c;即可匹配所有的字[1],[12]这些字符&#xff0c;然后鼠标点击替换为的空白处&#xff0c;再点击特殊格式–>“字体”&#xff0c;选中上标&#xff0c;最…...

计算机毕设-基于springboot的游戏创意工坊与推广平台的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...

kafka的备份策略:从备份到恢复

文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言&#xff1a;Kafka的备份的单元是partition&#xff0c;也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互&#xff0c;follow从leader副本进…...

【畅购商城】微信支付之支付回调和支付状态

目录 Nuxt.js IP 启动 支付回调 回调接口 后端实现 查看支付状态 后端实现 前端实现 ​​​​​​​前置技术&#xff1a;RabbitMQ ​​​​​​​更新订单状态 ​​​​​​​Nuxt.js IP 启动 "config": {"nuxt": {"host": "0.0…...

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…...

MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发

MTK6765安卓核心板是基于联发科高效八核处理器平台开发的一款强大硬件解决方案。这款核心板的核心是采用12纳米工艺打造的MTK6765 CPU&#xff0c;具备四个主频高达2.3GHz的CORTEX-A53核心和四个主频为1.8GHz的CORTEX-A53核心&#xff0c;提供了卓越的处理性能。用户可以根据需…...

conda常用维护命令

文章目录 1. 初始化和更新 Conda更新 Conda初始化 Conda&#xff08;如果需要&#xff09; 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"要设置…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...