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

news2024/10/7 11:24:30

目录

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.coloradmin.cn/o/1826531.html

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

相关文章

mysql 8 创建用户,并对用户授权

创建用户: 对MySQL创建新用户。命令如下: create user devuser% identified by 123456; 授予权限 grant all privileges on joolun_ry.* to devuser% with grant option; 参数说明: joolun_ry:表明对那个库进行授权&#xf…

SpringCloud跨服务远程调用

随着项目的使用者越来越多,项目承担的压力也会越来越大,为了让我们的项目能服务更多的使用者,我们不得不需要把我们的单体项目拆分成多个微服务,就比如把一个商城系统拆分成用户系统,商品系统,订单系统&…

Type-C接口显示器:C口高效连接与无限可能 LDR

Type-C显示器C接口的未来:高效连接与无限可能 随着科技的飞速发展,我们的日常生活和工作中对于高效、便捷的连接方式的需求日益增加。在这样的背景下,Type-C接口显示器凭借其卓越的性能和广泛的兼容性,正逐渐崭露头角&#xff0c…

RIP路由协议汇总(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时,可以通过路由汇总(又称路由汇聚或路由聚合)来减少路由条目数,加快路由收敛时间和增强网络稳定性。路由汇总的原理是,同一个自然网段内的不…

C++11默认成员函数控制

默认成员函数有 如果自己不显示声明,那么默认编译器会自己生成一个 如果有一个构造函数被声明了,那其他的默认函数编译器就不会再生成 这样的有时又不生成,容易造成混乱,于是C11让程序员可以控制是否需要编译器生成。 显式缺省函…

MEMS:Lecture 16 Gyros

陀螺仪原理 A classic spinning gyroscope measures the rotation rate by utilizing the conservation of angular momentum. 经典旋转陀螺仪通过利用角动量守恒来测量旋转速率。 Coriolis Effect and Coriolis Force 科里奥利效应是一种出现在旋转参考系中的现象。它描述了…

多线程中run()和start()的区别

我们知道,在多线程中 Thread thread new Thread(runnable); thread.start();以及 thread.run();都可以执行runnable中run方法下的代码,但是二者又有所不同 下面给出一段代码用以体现二者的区别: 以下代码中,通过thread.start()启…

后端中缓存的作用以及基于Spring框架演示实现缓存

缓存的作用及演示 现在我们使用的程序都是通过去数据库里拿数据然后展示的 长期对数据库进行数据访问 这样数据库的压力会越来越大 数据库扛不住了 创建了一个新的区域 程序访问去缓存 缓存区数据库 缓存里放数据 有效降低数据访问的压力 我们首先进行一个演示 为了演示…

2024全新仿麻豆视频苹果cms源码v10影视模板

下载地址:2024全新仿麻豆视频苹果cms源码v10影视模板 高端大气的设计,适合做电影、连续剧、综艺、动漫、微电影、纪录片、海外剧等视频网站

Leetcode419. 甲板上的战舰

Every day a Leetcode 题目来源:419. 甲板上的战舰 解法1:一次遍历 战舰的个数,等于战舰「头部」的个数。 具体来说,如果位于 (i, j) 的格子是战舰的头部,那么左边和上边的相邻格子不能是 X。 代码: …

OrangePi AIpro 机器人仿真与人工智能应用测评

系列文章目录 前言 本篇文章分为2个部分,第一部分主要搭建了机器人的仿真环境(ROS2 MuJoCo等),运行了机械臂及移动机器人相关示例程序;第二部分运行了OrangePi AIpro系统自带的示例程序及昇腾社区官方的示例程序&#…

MySQL 使用 MyFlash 快速恢复误删除、误修改数据

一、MyFlash MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具,主要用于MySQL数据库的DML操作的回滚。这个工具通过解析binlog日志,帮助用户高效、方便地进行数据恢复。MyFlash的优势在于它提供了更多的过滤选项,使得回滚操作变…

一文了解Spark引擎的优势及应用场景

Spark引擎诞生的背景 Spark的发展历程可以追溯到2009年,由加州大学伯克利分校的AMPLab研究团队发起。成为Apache软件基金会的孵化项目后,于2012年发布了第一个稳定版本。 以下是Spark的主要发展里程碑: 初始版本发布:2010年开发…

mysql报错Access denied for user ‘root‘,navicat可以连接mysql,spring不能连mysql

首先修改配置文件跳过验证,编辑你自己挂载的配置文件的位置 #查找my.cnf位置 sudo find / -name "my.cnf"编辑mysql配置文件 vim /opt/soft/mysql/conf/my.cnf #在[mysqld]下面添加 skip_grant_tables#重启mysql docker restart mysql#进入容器 docke…

完美的移动端 UI 风格让客户无可挑剔

完美的移动端 UI 风格让客户无可挑剔

快速数据处理:软件功能简介及下载

目录 1 功能介绍 1.1 封面 1.2 可定制功能 1.3 支持的操作系统和CPU 1.4 数据上报 1.5 数据接收 1.5 附带的测试数据 1.6 关于内置python的说明 2 软件下载 3 待开发功能 发布这个程序的原因是,前面写的这个专题的几篇文章,我原以为一点用也没…

代码随想录算法训练营第三十六天| 452. 用最少数量的箭引爆气球, 435. 无重叠区间 ,763.划分字母区间

452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int findMinArrowShots(int[][] points) {if (points.length < 1) {return points.length;}Arrays.sort(points, (o1, o2) -> {if (o1[0] ! o2[0]) {return o1[0] < o2[0…

局域网监控软件有哪些:五款好用的网络监控神器分享(收藏篇)

在日益复杂的企业网络环境中&#xff0c;有效地监控局域网内的活动对于确保网络安全、提高工作效率和维护企业资产至关重要。 为此&#xff0c;精选了五款市场上广受好评的局域网监控软件&#xff0c;它们各自具备独特的功能和优势&#xff0c;能够满足不同规模企业的需求&…

下载使用nginx发布html自定义页面

在浏览器搜索nginx.org&#xff0c;然后点击download&#xff0c;接着点击 stable and mainline 选择自己所使用系统对应的信息后点击&#xff08;我用的是CentOS&#xff0c;所以需要点击RHEL and derivatives&#xff09; vim /etc/yum.repos.d/nginx.repo [nginx-stable] n…

大模型应用:LangChain-Golang核心模块使用

1.简介 LangChain是一个开源的框架&#xff0c;它提供了构建基于大模型的AI应用所需的模块和工具。它可以帮助开发者轻松地与大型语言模型(LLM)集成&#xff0c;实现文本生成、问答、翻译、对话等任务。LangChain的出现大大降低了AI应用开发的门槛&#xff0c;使得任何人都可以…