超详解——Python 字典详解——小白篇

目录

1. 创建字典

示例:

2. 访问字典中的元素

示例:

3. 修改字典元素

示例:

4. 删除字典元素

示例:

5. 查找元素是否是字典的键

示例:

6. 标准类型操作符

获取字典长度

合并两个字典

7. 常用内置函数

keys() 方法

values() 方法

items() 方法

字典的遍历


字典(Dictionary)是Python中非常重要和实用的数据结构,用于存储键值对(key-value pairs)。字典在很多编程场景中非常有用,因为它们提供了一种高效的方式来管理和访问数据。本文将详细讲解如何创建字典、访问字典中的元素、修改字典元素、删除字典元素、查找元素是否是字典的键、标准类型操作符以及常用内置函数。

1. 创建字典

字典是由一系列键值对组成的无序集合。键是唯一的,且必须是不可变的类型(如字符串、数字或元组),值可以是任何类型。字典使用花括号 {} 创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。

示例:
# 创建一个空字典
empty_dict = {}# 创建一个包含键值对的字典
person = {"name": "Alice", "age": 25, "city": "New York"}# 使用 dict() 函数创建字典
person = dict(name="Alice", age=25, city="New York")# 创建嵌套字典
nested_dict = {"name": "Alice", "details": {"age": 25, "city": "New York"}}print(empty_dict)  # 输出:{}
print(person)      # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
print(nested_dict) # 输出:{'name': 'Alice', 'details': {'age': 25, 'city': 'New York'}}

2. 访问字典中的元素

字典中的元素可以通过键来访问。如果键不存在,会引发 KeyError 异常。可以使用 get() 方法在键不存在时返回默认值,而不是引发异常。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}# 使用键访问值
print(person["name"])  # 输出:Alice
print(person["age"])   # 输出:25# 使用 get() 方法访问值
print(person.get("city"))      # 输出:New York
print(person.get("country"))   # 输出:None
print(person.get("country", "USA"))  # 输出:USA

3. 修改字典元素

字典中的值可以通过键进行修改。如果键不存在,会添加一个新的键值对。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}# 修改现有键的值
person["age"] = 26
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York'}# 添加新的键值对
person["country"] = "USA"
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}

4. 删除字典元素

可以使用 del 语句或 pop() 方法删除字典中的元素。pop() 方法还会返回被删除的值。popitem() 方法删除并返回字典中的最后一个键值对(在Python 3.7+中,字典是有序的)。

示例:
person = {"name": "Alice", "age": 25, "city": "New York", "country": "USA"}# 使用 del 语句删除元素
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}# 使用 pop() 方法删除元素
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}

使用 del 语句删除字典元素

del 语句用于从字典中删除指定的键及其对应的值。使用此方法时,如果尝试删除的键不存在,会引发 KeyError 异常。

person = {"name": "Alice","age": 25,"city": "New York","country": "USA"
}# 使用 del 语句删除键 "country"
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

 使用 pop() 方法删除字典元素

pop() 方法用于删除指定的键,并返回该键对应的值。如果指定的键不存在,同样会引发 KeyError 异常。可以提供一个默认值参数,当键不存在时返回该默认值而不引发异常。

person = {"name": "Alice","age": 25,"city": "New York"
}# 使用 pop() 方法删除键 "age" 并返回其值
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}# 使用 pop() 方法删除键 "country" 并提供默认值
country = person.pop("country", "Not Found")
print(country)  # 输出:Not Found
print(person)   # 输出:{'name': 'Alice', 'city': 'New York'}

使用 popitem() 方法删除并返回最后一个键值对

popitem() 方法删除并返回字典中的最后一个键值对。在 Python 3.7 及之后的版本中,字典是有序的,因此 popitem() 会删除字典中的最后一个元素。如果字典为空,调用 popitem() 会引发 KeyError 异常。

person = {"name": "Alice","city": "New York"
}# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}

 

5. 查找元素是否是字典的键

可以使用 in 操作符检查一个键是否存在于字典中。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}# 检查键是否存在
print("name" in person)  # 输出:True
print("country" in person)  # 输出:False# 检查键是否不存在
print("name" not in person)  # 输出:False
print("country" not in person)  # 输出:True

检查键是否存在

使用 in 操作符可以直接检查键是否在字典中。

# 检查键 "name" 是否存在于字典 person 中
print("name" in person)  # 输出:True# 检查键 "country" 是否存在于字典 person 中
print("country" in person)  # 输出:False
  • "name" in person 返回 True,因为字典 person 中确实存在键 "name"
  • "country" in person 返回 False,因为字典 person 中不存在键 "country"

检查键是否不存在

同样地,我们可以使用 not in 操作符来检查键是否不在字典中。

# 检查键 "name" 是否不存在于字典 person 中
print("name" not in person)  # 输出:False# 检查键 "country" 是否不存在于字典 person 中
print("country" not in person)  # 输出:True
  • "name" not in person 返回 False,因为字典 person 中存在键 "name"
  • "country" not in person 返回 True,因为字典 person 中确实不存在键 "country"

 6. 标准类型操作符

字典支持一些常用的标准类型操作符,例如键值对的长度、合并两个字典等。

获取字典长度

使用 len() 函数可以获取字典中键值对的数量。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(len(person))  # 输出:3

合并两个字典

在Python 3.9+中,可以使用 | 操作符合并两个字典。

示例:

dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
merged_dict = dict1 | dict2
print(merged_dict)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

在早期版本中,可以使用 update() 方法合并字典。

示例:

dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
dict1.update(dict2)
print(dict1)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

7. 常用内置函数

Python提供了一些内置函数,用于操作和处理字典。

keys() 方法

keys() 方法返回字典中所有的键。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.keys())  # 输出:dict_keys(['name', 'age', 'city'])

values() 方法

values() 方法返回字典中所有的值。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.values())  # 输出:dict_values(['Alice', 25, 'New York'])

items() 方法

items() 方法返回字典中所有的键值对。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.items())  # 输出:dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

字典的遍历

可以使用 for 循环遍历字典的键、值或键值对。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}# 遍历键
for key in person.keys():print(key)# 遍历值
for value in person.values():print(value)# 遍历键值对
for key, value in person.items():print(f"{key}: {value}")

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

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

相关文章

TFT屏幕波形显示

REVIEW 关于TFT显示屏,之前已经做过彩条显示: TFT显示屏驱动_tft驱动-CSDN博客 关于ROM IP核,以及coe文件生成: FPGA寄存器 Vivado IP核_fpga寄存器资源-CSDN博客 1. TFT屏幕ROM显示正弦波 ①生成coe文件 %% sin-cos wave dat…

【Linux】基础IO [万字之作]

目录 一.重谈文件 二.重谈C文件操作 1.操作 1.文件的打开和关闭 2.文件的读写操作 ​编辑 1.fgetc函数 2.fputc函数 3.fputs函数 4.fgets函数 5.fprintf函数 6.fscanf函数 7.fread函数 8.fwrite函数 三.重谈当前路径 四.系统文件操作接口 1.Open函数 2.write函数 3…

记周末百度云防御CC攻击事件

今天一早,收到百度智能云短信提醒,一位客户的网站遭遇了CC攻击。 主机吧赶紧登陆客户网站查看,是否正常,看是否需要通知客户。 结果打开正常,看情况并没什么影响,那就等攻击结果了再看吧。 下午的时候&am…

python-求f(x,n)

[题目描述] 输入: 输入 𝑥和 𝑛。输出: 函数值,保留两位小数。样例输入1 4.2 10 样例输出1 3.68 来源/分类(难度系数:一星) 完整代码如下: x,nmap(eval,input().split(…

conda安装pytorch使用清华源

原命令,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch使用清华源,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatool…

基于Java+MySQL+Tomcat+maven+JavaScript+Servlet的个人博客系统

目录 一、项目简介 二、页面效果 三、涉及的知识点 四、准备工作 1、创建maven项目,引入依赖 2、将前端代码粘贴到webapp目录下 3、设计数据库 4、编写数据库代码 以及 封装数据库连接操作 5、创建实体类 以及 封装对数据库的增删查改操作 五、功能实现 1…

使用thymeleaf直接渲染字符串

目录 一、依赖 二、示例代码 一、依赖 <--JAVA 8--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.7.18</version></dependency><-…

Java高级特性

引言 Java不仅提供了基础的编程功能&#xff0c;还包括了一系列强大的高级特性&#xff0c;这些特性能够显著提高代码的灵活性、可扩展性和性能。本文将详细介绍Java的几个高级特性&#xff0c;包括反射机制、注解与注释、泛型编程、以及Lambda表达式与Stream API&#xff0c;并…

防止Selenium被检测 Google Chrome 125

背景 最近在使用selenium自动播放学习课程&#xff0c;相信大家也有一些类似的使用场景。 能自动化的事情&#xff0c;绝不自己干。 为防止被检测是机器人做题&#xff0c;刷视频&#xff0c;需要做一些小调整。 先来看作为服务方维护者&#xff0c;是如何检测是Selenium打…

sqoop的安装配置

1. 上传并解压安装包 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../server/ 重命名&#xff1a;mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop 2. 配置环境变量 sudo vim /etc/profile # 配置sqoop的环境变量 export SQOOP_HOME/export/server/sqoop export PATH$PATH…

C#——正则表达式详情

正则表达式 正则表达式: 列如判断一个字符串是不是手机号&#xff0c;或者密码是否包含大小写数字等这些要求&#xff0c;可以把这些条件写成一个表达式 创建正则表达式 string s1 "1234adsab1KHGFJD"; // 创建正则时需要在字符串前面加上 Regex r new Regex(&q…

NettyのNIOBIO原理解析

1、IO模型 在IO模型中&#xff0c;主要可分为同步与异步操作&#xff1a; 在同步 I/O 模型中&#xff0c;I/O 操作是阻塞的&#xff0c;当一个进程或线程执行 I/O 操作时&#xff0c;它会一直等待这个操作完成才继续执行后续的代码。 在异步 I/O 模型中&#xff0c;I/O 操作是非…

Shiro有key但无回显利用链子-JRMP大法

前言 shiro在手天下我有&#xff0c;扫出key直接梭哈getshell&#xff0c;横扫内网。但要是像这种情况&#xff0c;直接下班拜拜跑路&#xff0c;没有链子玩毛线… 直到出现了这么一个工具可以通过JRMP协议探测是否存在漏洞&#xff0c;很显然上面工具是做不到的&#xff0c;实…

Cheat Engine 学习

文章目录 Exact Value scanning任务实现步骤Unknown initial value任务实现步骤原理说明Floating points任务实现步骤原理说明Code finder任务实现步骤原理说明Pointers任务实现步骤原理说明Change Pointer 操作:Active(活跃状态)和数值修改:Code Injection任务概述实现步骤…

2024年【四川省安全员C证】考试题及四川省安全员C证考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员C证考试题是安全生产模拟考试一点通总题库中生成的一套四川省安全员C证考试资料&#xff0c;安全生产模拟考试一点通上四川省安全员C证作业手机同步练习。2024年【四川省安全员C证】考试题及四川省安全员…

博客没人看啊?我分析是这些原因

1.封面 主题封面还是个性化封面&#xff1f;主题封面对系列化很友好&#xff0c;如下图左&#xff1a; 在目录中什么主题一目了然&#xff0c;个性化封面在目录中就略显杂乱。但是通过观察CSDN主页发现热榜文章清一色个性化封面。如果使文字封面就会显得很无聊。 所以从提高浏…

Jenkins三种构建类型

目录 传送门前言一、概念二、前置处理&#xff08;必做&#xff09;1、赋予777权限2、让jenkins用户拥有root用户的kill权限3、要运行jar包端口号需要大于1024 三、自由风格软件项目&#xff08;FreeStyle Project&#xff09;&#xff08;推荐&#xff09;三、Maven项目&#…

金融科技:推动保险行业数字化转型的引擎

随着科技的飞速发展&#xff0c;金融科技&#xff08;FinTech&#xff09;已经成为推动金融行业变革的重要力量。特别是在保险行业&#xff0c;金融科技正引领着一场深刻的数字化转型&#xff0c;为保险公司带来了前所未有的机遇与挑战。本文将探讨金融科技如何推动保险行业的数…

UDP 协议详解与实战

目录 简介什么是 UDP&#xff1f;UDP 与 TCP 的区别 UDP 数据传输方式单播 - Unicast&#xff08;1:1&#xff09;广播 - Broadcast&#xff08;1:n&#xff09;有限广播 - Limited Broadcast直接广播 - Directed Broadcast 组/多播 - Multicast&#xff08;n:m&#xff09;任播…

屹晶微EG3002 单通道功率MOSFET驱动芯片 贴片SOP8

EG3002作为一款功率MOSFET驱动芯片&#xff0c;它的应用领域主要取决于其技术参数和性能特点。根据之前提供的信息&#xff0c;EG3002可能适用于以下领域&#xff1a; 1. 电源管理&#xff1a;用于高效率电源转换器&#xff0c;如开关电源&#xff08;SMPS&#xff09;、电池充…