当前位置: 首页 > 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"要设置…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...

02-性能方案设计

需求分析与测试设计 根据具体的性能测试需求&#xff0c;确定测试类型&#xff0c;以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通&#xff0c;初步确定压测方案及具体的性能指标QA完成性能测试设计后&#xff0c;需产出测试方案文档发送邮件到项目组&…...