Python入门教程+项目实战-12.2节: 字典的操作方法

news2024/9/23 11:34:03

目录

12.2.1 字典的常用操作方法

12.2.2 字典的查找

12.2.3 字典的修改

12.2.4 字典的添加

12.2.5 字典的删除

12.2.6 知识要点

12.2.7 系统学习python


12.2.1 字典的常用操作方法

字典类型是一种抽象数据类型,抽象数据类型定义了数据类型的操作方法,在本节的内容中,教同学们彻底掌握字典类型的常用操作方法。

字典的常用操作方法,主要有分为四类:字典的查找,字典的修改,字典的添加,字典的删除。

12.2.2 字典的查找

(1) 查找键名是否存在

查找方法:

1. key in dict  

2. key not in dict

key表示字典的键名,如果键名存在,则返回True,否则返回False。not in 表示是否不存在的意思。

代码实例:

Python

# __desc__ = 通过in操作符,查找键是否存在 

# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# 查找book中是否存在price的键名,如果存在则返回True
if "price" in book:  
    print("there is a key named price in book") 

# 通过not in 来查找键是否不存在,如果不存在则返回True
if "price" not in book:  
    print("there is no key named price in book")

(2) 查找键所对应的键值

查找方法:

1. dict[key]

key表示字典的键名,如果键名存在,会返回键值,如果键名不存在,则抛出异常。

2. dict.get(key, default=None)

key表示字典的键名,如果键名存在,会返回键值,如果键名不存在,则返回参数default指定的值。

操作符[]在列表和元组中用来进行索引访问和切片,在字典中,用来进行键值访问,修改键值,添加键值对。

代码实例:

Python

# __desc__ = 通过[]操作符来获取键值 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 

# 直接通过[]操作符获取键值
price = book["price"]
# 在执行上文代码时抛出异常,因为键名"price"并不存在 
# 可以先通过in操作来查找键名是否存在,来避免抛出异常
if "price" in book:  
   # 如果存在键名"price",则通过[]操作符获取键值  
   price = book["price"]

字典类型的get方法会先自动判断键名是否存在,避免了键名不存在时的错误异常。

代码实例:

Python

# __desc__ = 通过字典类型的get方法来获取键值 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# 执行get方法时,指定default参数的值为0
# 如果键名不存在,那么会返回在default参数中指定的值
price = book.get("price", 0) 
# price的输出为0

(1) 查找字典的所有键名

操作语法:

Python

dict.keys()

字典类型的keys方法返回的是一个dict_keys类型,dict_keys是一个可迭代对象,我们可以在for循环中进行遍历。

代码实例:

Python

# __desc__ = 通过字典类型的keys方法来获取所有键名 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# 在for循环中遍历字典的键值
for name in book.keys():  
    # name是一个变量,Python会自动将键名赋值给变量name  
    print(book[name]) 

"""程序的输出为:
"108节课彻底学通Python"
"薯条老师"
"""

可将dict_keys类型通过显示类型转换,转换为列表或元组类型。例如list(dict_keys)或者tuple(dict_keys)。同学们在进行学习的时候,要多进行发散性思考。

(2) 查找字典中的所有键值

操作语法:

Python

dict.values()

字典类型的values方法返回的是一个dict_values类型,dict_values是一个可迭代对象,同样可以在for循环中进行遍历。

代码实例:

Python

# __desc__ = 通过字典类型的values方法来获取所有键值 
# 定义一个字典对象 
book= {"name": "108节课彻底学通Python", "author": "薯条老师"} 

# 在for循环中遍历字典的键值
for value in book.values():  
    # value是一个变量,Python会自动将键值赋值给变量value  
    print(value) 

"""程序的输出为:
"108节课彻底学通Python"
"薯条老师"
"""

(5) 查找字典的所有键值对

在字典类型的keys与values方法中,只能单独地获取键名或键值。想必同学们会有这样的疑问,可不可以一次性获取键名和键值?

通过字典类型的items方法,可以返回字典中的键值对。字典类型的items方法返回的是一个dict_items类型。dict_items是一个可迭代对象,现在编写一段代码,在for循环中同时获取键名和键值。

代码实例:

Python

# __desc__ = 通过字典类型的items方法来获取键值对 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 

# 同学们须注意遍历键名与键值的语法
for name, value in book.items():  
    print(name, "-->", value)  

"""程序的输出为:
name-->108节课彻底学通Python
author-->薯条老师
"""

12.2.3 字典的修改

Python中字典的键是只读的,修改的是键名对应的键值。

(1) 修改字典的键值

操作语法:

Python

dict[key] = value

key表示键名,value表示键值。键名不存在时,会插入新的键值对。

代码实例:

Python

"""

12.2.4 字典的添加

(1) 操作符:[]

操作语法:

Python

dict[new_key] = value

new_key表示新的键名,value表示键值。

代码实例:

Python

# __desc__ = 通过操作符[]来添加新的键值对 
# 定义一个空的字典对象
book = {} 
book["author"] = "薯条老师"
# book的输出为{'author': '薯条老师'}

(2) dict.setdefault(key, default=None)

参数key表示键名,如果键存在,会返回键所对应的键值,否则添加一个新的键值对。通过参数default来指定新键的键值,返回值为键名所对应的键值,如果未指定键值,则返回值为None。

代码实例:

Python

# __desc__ = 通过setdefault方法来添加新的键值对 
# 定义一个空的字典对象
book = {} 
# 未通过default参数指定键值
returned_value = book.setdefault("author")
# returned_value的值为None
# book的输出为{'author': None} 


# 通过default参数指定键值
returned_value = book.setdefault("price", 66)
# returned_value的值为66
# book的输出为{'author': None, 'price': 66}

(3)dict.update(iterable)

iterable表示可迭代对象,传递的参数主要为字典类型,列表类型,元组类型,无返回值。通过字典对象来更新字典时,如果键名存在,则字典对象中键名的键值被更新为新的键值,如果键名不存在,添加新的键值对。通过列表,元组来更新字典时,列表/元组是二维的结构,具体可看代码实例。

代码实例:

Python

# __desc__ = 通过setdefault方法来添加新的键值对 
# 定义一个空的字典对象book = {} 
# 通过字典来更新字典
book.update({"name": "108节课彻底学通Python", "author": "薯条橙子"}) 
""" book的输出为:
{"name": "108节课彻底学通Python", "author": "薯条橙子"}
""" 

# 通过列表或元组来更新字典时,列表与元组是一个二维的结构
# Python会将元组中的第一个元素作为键名,第二个元素作为键值
# 元组中只存在一个数据项时,不要遗漏逗号
book.update((("price", 69),)) 
""" book的输出为:
{"name": "108节课彻底学通Python", "author": "薯条橙子", "price": 69}
"""

12.2.5 字典的删除

(1) dict.pop(key)

pop方法用来删除指定的键,待删除的键必须存在于字典对象中,否则会抛出键名不存在的错误异常,返回值为键名对应的键值。

代码实例:

Python

# __desc__ = 通过pop方法来删除键 
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# 删除键时,可以先通过in操作符来判断键名是否存在 
if "price" in book:  
    # 如果存在price键,就执行pop方法来删除  
    # 返回值为键名所对应的键值  
    price = book.pop("price")

(2) dict.popitem()

popitem方法用来删除字典中的键值对,默认删除字典末尾的键值对。方法的返回值为一个元组,元组的第一个元素为键名,第二个元素为键值。

代码实例:

Python

# __desc__ = 通过popitem方法来删除键值对 
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# popitem方法的返回值为元组类型
item = book.popitem() 

# 元组的第一个元素为键名,第二个元素为键值
# 可通过索引来进行访问, 索引编号为0的是键名,编号为1的是键值
name = item[0]
value = item[1]

# 也可以利用元组的自动解包来赋值
name, value = item

(3) dict.clear()

通过字典类型的clear方法来一键删除字典中的所有键,无返回值

代码实例:

Python

# __desc__ = 通过clear方法来清空字典 
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
# 执行clear方法来清空字典book.clear()
# 执行clear方法后,book的输出为{}

12.2.6 知识要点

(1) 字典的常用操作方法,主要有分为四类:字典的查找,字典的修改,字典的添加,字典的删除。

(2) 字操作符[]在列表和元组中用来进行索引访问和切片,在字典中,用来进行键值访问,修改键值,添加键值对。

12.2.7 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。

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

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

相关文章

想成为神经网络大师?这些常用算法和框架必须掌握!

神经网络是机器学习和人工智能领域中的一种常用算法,它在图像识别、自然语言处理等方面都有广泛的应用。如果你想入门神经网络,那么这篇文章就是为你准备的。 首先,了解基本概念是入门神经网络的基础。神经元是神经网络的基本组成部分&#x…

AQS底层源码解析

可重入锁 又叫递归锁,同一个线程在外层方法获得锁的时候,再进入该线程内层方法会自动获取锁,(前提锁对象是同一个对象)。不会因为之前已经获取过还没释放而阻塞。 Synchronized和ReentrantLock都是可重入锁&#xff…

玩游戏时突然弹出”显示器驱动程序已停止响应并且已恢复”怎么办

随着3A游戏大作不断面市,用户也不断地提升着自己的硬件设备。但是硬件更上了,却还会出现一些突如其来的情况,比如正准备开启某款游戏时,电脑右下角突然出现“显示器驱动程序已停止响应并且已恢复”。遇事不慌,驱动人生…

创新指南|5大策略让创新业务扩张最大避免“增长痛苦”

公司在开发和孵化新业务计划方面进行了大量投资,但很少有公司遵循严格的途径来扩大新业务规模。虽然80%的公司声称构思和孵化新企业,但只有16%的公司成功扩大了规模。典型案例是百思买在许多失败倒闭的扩大新业务取得了成功。它经历了建立新业务所需的3个…

如何使用 Python+selenium 进行 web 自动化测试?

使用Pythonselenium进行web自动化测试主要分为以下步骤: 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条…

VMware ESXi 7.0 U3m macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 7.0 U3m macOS Unlocker & OEM BIOS (标准版和厂商定制版) 提供标准版和 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科) 定制版镜像 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版…

AC/DC、DC/DC转换器

什么是AC? Alternating Current(交流)的首字母缩写。 AC是大小和极性(方向)随时间呈周期性变化的电流。 电流极性在1秒内的变化次数被称为频率,以Hz为单位表示。 什么是DC? Direct Current&…

C语言的存储类别,链接和内存管理

目录 1.1作用域 1.2链接 1.3存储期 1.4存储类别 1.4.1自动变量 1.4.2寄存器变量 1.4.3块作用域的静态变量 1.4.4外部链接的静态变量 1.4.5内部链接的静态变量 1.4.6存储类别说明符 1.5动态内存管理 1.5.1出现原因 栈内存 数据段与代码段 堆内存 1.5.2动态内存函…

Flink第二章:基本操作

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作 文章目录 系列文章目录前言一、Source1.读取无界数据流2.读取无界流数据3.从Kafka读取数据 二、Transform1.map(映射)2.filter(过滤)3.flatmap(扁平映射)4.keyBy(按键聚合)5.reduce(归约聚合)6.UDF(用户自定义函数)7.…

4个ChatGPT拓展出来的工具

现在ChatGPT 相关 的方向非常的多,各个大厂一个一个推出了自己的大模型,从国外到国内,ChatGPT 相关 也有几十个,这是大厂的方向。 对于比较小的团队,很多都是在ChatGPT 的基础上进行的开发,下面罗列出4个在…

ASO优化之应用内活动的投放策略

我们可以在“落地页”,“搜索结果页”,“详情页”,“today标签页”等各个版面展示应用的活动投放,这不仅能够快速被用户浏览到,自然能带来更多的流量,还能促进用户的活跃度。 那我们该如何进行投放呢&…

哪一本书让你逢人就推荐的?

小编逢人就推荐的程序员经典书目: 1、【樊登推荐】浪潮之巅 第四版 作者:吴军 这不是一本科技产业发展历史集,而是在这个数字时代,一本IT人非读不可,而非IT人也应该拜读的作品。 《浪潮之巅 第四版》是一本介绍互联…

【算法与数据结构】链表——题目详解

题目详解 Leetcode-206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出&#x…

《Andorid开源》greenDao 数据库orm框架

一 前言:以前没用框架写Andorid的Sqlite的时候就是用SQLiteDatabase ,SQLiteOpenHelper ,SQL语句等一些东西,特别在写SQL语句来进行 数据库操作的时候是一件很繁琐的事情,有时候没有错误提示的,很难找到错误的地方&a…

C#--使用Quartz实现定时任务

C#小技巧–使用Quartz实现定时任务 Quartz.net 简介 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天&…

js - 原型和原型链的简单理解

前言 有一个概念需要清楚,只有构造函数才有.prototype对象,对象是没有这个属性的,__proto__只是浏览器提供的非标准化的访问对象的构造函数的原型对象的一种方式; prototype(原型对象) 函数即对象,每个函数都有一个prototype属…

代码随想录 数组篇 螺旋矩阵II Java实现

文章目录 (中等)59. 螺旋矩阵II(中等)54. 螺旋矩阵(简单)JZ29 顺时针打印矩阵 (中等)59. 螺旋矩阵II 因为我是先做的JZ29,所以看到这题的时候,几乎就是一样的…

最适合家用的洗地机哪个牌子好?2023洗地机推荐

洗地机是目前众多清洁工具中的热门之选,我身边很多朋友都选择了洗地机来处理家居清洁,一说一,洗地机可以处理干湿垃圾,还都有一键自清洁功能,用起来确实方便简单。不过,市面上的洗地机参差不齐,…

RabbitMQ 详解

文章目录 RabbitMQ 详解一、MQ 简介1. MQ优缺点2. MQ应用场景3. AMQP 和 JMS4. 常见的 MQ 产品 二、RabbitMQ 工作原理三、Linux环境安装RabbitMQ1. 安装 Erlang2. 安装 RabbitMQ3. 管控台 四、RabbitMQ 工作模式1. 简单模式(Hello World)2. 工作队列模式(Work Queue)3. 发布订…

PMP项目管理-[第十三章]相关方管理

相关方管理知识体系: 识别相关方: 规划相关方参与: 管理相关方参与: 监督相关方参与 : 13.1 识别相关方 定义:定期识别项目相关方,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成…