目录

9.2.1 字典的操作

9.2.2 字典的查找

9.2.3 字典的修改

9.2.4 字典的添加

9.2.5 字典的删除

9.2.6 今天你逛街了吗


9.2.1 字典的操作

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

image.png

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

9.2.2 字典的查找

(1) 查找键名是否存在

查找方法:

1. key in dict  

2. key not in dict

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

代码实例:

# __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指定的值。

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

代码实例:

# __desc__ = 通过[]操作符来获取键值 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} # 直接通过[]操作符获取键值
price = book["price"]
# 在执行上文代码时抛出异常,因为键名"price"并不存在 
# 可以先通过in操作来查找键名是否存在,来避免抛出异常
if "price" in book:  # 如果存在键名"price",则通过[]操作符获取键值  price = book["price"]

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

代码实例:

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

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

操作语法:

dict.keys()

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

代码实例:

# __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) 查找字典中的所有键值

操作语法:

dict.values()

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

代码实例:

# __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循环中同时获取键名和键值。

代码实例:

# __desc__ = 通过字典类型的items方法来获取键值对 
# 定义一个字典对象
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} # 同学们须注意遍历键名与键值的语法
for name, value in book.items():  print(name, "-->", value)  """程序的输出为:
name-->108节课彻底学通Python
author-->薯条老师
"""

9.2.3 字典的修改

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

(1) 修改字典的键值

操作语法:

dict[key] = value

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

9.2.4 字典的添加

(1) 操作符:[]

操作语法:

dict[new_key] = value

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

代码实例:

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

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

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

代码实例:

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

代码实例:

# __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}
"""

9.2.5 字典的删除

(1) dict.pop(key)

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

代码实例:

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

(2) dict.popitem()

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

代码实例:

# __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方法来一键删除字典中的所有键,无返回值

代码实例:

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

9.2.6 今天你逛街了吗

跟薯条老师学高级爬虫(JS逆向+安卓逆向),数据分析,数据科学,金融量化交易,以及机器学习+深度学习+大模型算法。坚持下去,你一定会成为高手。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。薯条老师的个人技术博客:Python神仙级入门教程-零基础学习数据分析,高级爬虫,机器学习+大模型算法。对本节教程有任何不懂的同学,亦可在评论区中进行评论。

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

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

相关文章

omniparser v2 本地部署及制作docker镜像(20250715)

关于 omniparser v2 本地部署,网上资料不算多,尤其是对于土蔷内用户,还是有些坑的。 1、安装步骤 可参考两个CSDN博客: (1)大模型实战 - ‘OmniParser-V2本地部署安装 链接 (2)…

自己写个 `rsync` + `fswatch` 实时增量同步脚本,干掉 Cursor AI、Sublime Text 的SFTP等 插件!

自己写个 rsync fswatch 实时增量同步脚本,干掉 Cursor AI、Sublime Text 的 SFTP等 插件! 作为一个码农,我最头疼的事情之一就是编辑器同步代码到服务器这块。用过各种各样的sftp、rsync插件,感觉不好用。。 我琢磨着&#xff1…

linux中at命令的常用用法。

Linux 中 at 命令用于安排一次性定时任务,需要用到在某个时间只需要执行一次的命令的时候,可以使用at 1:安装at # Debian/Ubuntu sudo apt install at# CentOS/RHEL sudo yum install at2:启动at sudo systemctl start atd # 启…

【安卓笔记】RxJava的使用+修改功能+搭配retrofit+RxView防快速点击

0. 环境: 电脑:Windows10 Android Studio: 2024.3.2 编程语言: Java Gradle version:8.11.1 Compile Sdk Version:35 Java 版本:Java11 1. 介绍RxJava GitHub开源地址:https://github.com/Reactive…

Windows 下原生使用 claude code + Kimi K2

搞定了kimi k2 claude code在windows下原生使用 Windows下使用claude code的障碍是shell环境(命令行),非posix风格shell无法正常让claude code读取到url和key, 导致无法使用。解决问题的本质是使用符合posix风格的shell环境,我们…

Leetcode Easy题小解(C++语言描述)1

Leetcode Easy题小解(C语言描述) 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交**:**题目数据…

EP01:【NLP 第二弹】自然语言处理概述

一、NLP通向智能之路 1.1 图灵测试 1.1.1 提出背景 由计算机科学家阿兰・图灵于 1950 年提出,是早期衡量机器智能水平的重要概念。 1.1.2 提出目的 判断机器是否能表现出与人类相当的智能行为。 1.1.3 测试原理 场景设定:测试中存在一位人类测试者&#…

Ansible 查看PostgreSQL的版本

Ansible的基础知识就不说了直接贴剧本- name: Check PostgreSQL versionhosts: db_serversbecome: yesvars:ansible_python_interpreter: /usr/bin/python3db_name: postgresdb_user: postgresdb_password: your_passwordtasks:- name: Install psycopg2ansible.builtin.packag…

【视觉SLAM笔记】第9章 后端1

一、理论1. 状态估计的概率解释我们来深入探讨一下视觉SLAM中状态估计的概率解释。这可以说是理解现代SLAM算法(尤其是后端优化)的基石1. 问题的核心:不确定性SLAM(同步定位与建图)的本质是在一个未知环境中&#xff0…

(数据结构)复杂度

基本概念说明 数据结构 定义:数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有用途都有用(要考虑适配、效率问题,在不同情况下使用合适的…

玩转Docker | 使用Docker部署bender个人导航页工具

玩转Docker | 使用Docker部署bender个人导航页工具 前言 一、bender介绍 Bender 简介 Bender 的主要特点 二、系统要求 环境要求 环境检查 Docker版本检查 检查操作系统版本 三、部署bender服务 下载bender镜像 编辑部署文件 创建容器 检查容器状态 检查服务端口 安全设置 四、…

解决了困扰我的upload靶场无法解析phtml等后缀的问题

本文章为解决困扰我的 upload 靶场无法解析 phtml 问题 ​ 这个问题直接让我过不了Upload-Pass-03这一关,一直卡着。 ​ 痛太痛了 ,为什么无法解析上传之后的 phtml 后缀文件!这块儿折磨了博主一天多,太不容易了,查找…

Leetcode百题斩-二分搜索

二分搜索也是一个很有趣的专题,被做过的题中,刚好一个Easy,一个Medium和一个Hard,刚好可以看看,二分搜索的三个难度等级都是啥样的。 124. Binary Tree Maximum Path Sum[Hard](详见二叉树专题)…

【IDEA】格式化代码工具配置

格式化代码快捷键: CtrlAltL格式代码的时候不会再方法名与参数中间添加空格默认不勾选的情况下:代码样例:勾选之后的样例:选择不勾选,IDEA默认情况下就是不勾选的状态忽略加载文件有些非必要加载到开发工具中的文件我们…

驱动开发(3)|rk356x驱动GPIO基础应用之点亮led灯

点亮LED灯看似是一个基础的操作,但实际上,许多高级应用也依赖于高低电平的切换。例如,脉冲宽度调制(PWM)信号可以用来精确控制电机的转速,通过改变脉冲的频率和占空比,实现对电机的精确调节&…

手动搭建PHP环境:步步为营,解锁Web开发

目录一、引言二、准备工作2.1 明确所需软件2.2 下载软件三、Windows 系统搭建步骤3.1 安装 Apache 服务器3.2 安装 PHP3.3 集成 Apache 与 PHP3.4 安装 MySQL3.5 配置 PHP 连接 MySQL四、Linux 系统搭建步骤(以 Ubuntu 为例)4.1 更新系统4.2 安装 Apache…

DrissionPage:一款让网页自动化更简单的 Python 库

在网页自动化领域,Selenium 和 Playwright 早已是开发者耳熟能详的工具。但今天要给大家介绍一款更轻量、更易用的 Python 库 ——DrissionPage。它以 "融合 selenium 和 requests 优势" 为核心设计理念,既能像 requests 一样高效处理静态网页…

理解Grafana中`X-Scope-OrgID`的作用与配置

X-Scope-OrgID的作用 该HTTP Header用于标识Loki日志数据的所属租户(组织)。在多租户模式下,Loki通过此Header隔离不同团队或用户的数据,确保查询和存储的独立性。数据隔离: 租户A的日志标记为X-Scope-OrgID: team-a&a…

【PycharmPyqt designer桌面程序设计】

在 main.py 中调用 Qt Designer 生成的 windows.py(假设它是 PySide2 版)。 只要把两个文件放在同一目录即可直接运行。 ──────────────────── 1️⃣ windows.py(Qt Designer 生成,已转码) # -*-…

Unity Android Logcat插件 输出日志中文乱码解决

背景之前安卓真机调试看日志,一直用的是Android Studio自带的adb命令进行看日志,不太方便,改用Unity自带的安卓日志插件时,存在中文日志乱码问题。插件安装基于Unity6000.1.11版本:Window -> Package Management -&…