🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. 字典

2.1 字典的创建

2.1.1 大括号+直接赋值

2.1.2 大括号+字典推导式

2.1.3 dict+关键字参数

2.1.4 dict+元组列表

2.1.5 dict+zip方法

2.1.6 dict+fromkeys方法

2.2 字典的访问

2.2.1 使用键访问字典元素

2.2.2 使用 get() 方法访问字典元素

2.2.3 元组列表则用元组访问的方法访问

2.3 字典的修改

2.3.1 直接修改字典元素

2.3.2 使用 update() 方法修改字典

2.3.3 删除字典元素

2.3.4 清空字典

2.4 字典方法

2.4.1 keys()

2.4.2 values()

2.4.3 update()

2.4.4 fromkeys()

2.4.5 setdefault()

2.4.6 clear()

2.4.6 copy()

2.4.7 items()

2.4.8 get()

3. 完整示例

4. 总结


1. 前言

  • 👑《零基础入门PyTorch/Python》专栏持续更新中,未来最少文章数量为60篇。由于专栏刚刚建立,促销价为9.9。后续将慢慢恢复原价至99.9🍉【在校大学生】评论区留言并私信我免费订阅
  • 👑《零基础入门PyTorch/Python》专栏主要针对零基础入门的小伙伴。不需要Python基础,不需要深度学习基础,只要你愿意学,这一个专栏将真正让你做到零基础入门。
  • 🔥每例项目都包括理论讲解、数据集、源代码

正在更新中💹💹

🚨项目运行环境:

  • 平台:Window11
  • 语言环境:Python3.8
  • 运行环境1:PyCharm 2021.3
  • 运行环境2:Jupyter Notebook 7.3.2
  • 框架:PyTorch 2.5.1(CUDA11.8)

2. 字典

        (Dictionary)是一种内置的数据结构,以键值对(key-value pair)的形式存储数据。在许多Python或PyTorch中常常被使用,例如nn.Sequential等等。因此猫猫有必要写一篇文章,详细讲讲字典的生命全周期。

2.1 字典的创建

        字典创建的方法本质上就两种:大括号法dict方法

2.1.1 大括号+直接赋值

这是最常见和直接的方式,直接使用 {} 包裹键值对:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

2.1.2 大括号+字典推导式

字典推导式允许你根据某种条件或从其他可迭代对象创建字典:

my_dict = {x: x**2 for x in range(5)}
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

2.1.3 dict+关键字参数

你可以使用 dict() 函数来创建字典,通过关键字参数来初始化:

my_dict = dict(name='Alice', age=25, city='New York')

2.1.4 dict+元组列表

你可以使用 dict() 函数来创建字典,通过元组列表来初始化:

my_dict = dict([('name', 'Alice'), ('age', 25), ('city', 'New York')])

2.1.5 dict+zip方法

zip() 可以将两个可迭代对象组合成一个字典,前一个对象作为键,后一个对象作为值:

示例一:

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
my_dict = dict(zip(keys, values))
# 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

 示例二:

dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}

2.1.6 dict+fromkeys方法

通常用来初始化字典, 设置value的默认值

my_dict = dict.fromkeys(['name', 'age', 'city'], None)
# 输出: {'name': None, 'age': None, 'city': None}

2.2 字典的访问

        字典访问使用的是中括号([ ])

2.2.1 使用键访问字典元素

        通过字典的键来访问对应的值。如果键不存在,会抛出 KeyError 错误

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问 'name' 键对应的值
print(my_dict['name'])  # 输出: Alice

利用[]中括号来访问键值对的值 

2.2.2 使用 get() 方法访问字典元素

        get() 方法可以通过键来访问字典的值。如果键不存在,它会返回 None,也可以指定一个默认值:

# 使用 get() 方法
print(my_dict.get('name'))  # 输出: Alice
# 使用 get() 方法访问不存在的键
print(my_dict.get('gender'))  # 输出: None
# 使用 get() 方法访问不存在的键并设置默认值
print(my_dict.get('gender', 'Not specified'))  # 输出: Not specified

2.2.3 元组列表则用元组访问的方法访问

        字典的输出有时候就是元组形式,因此访问字典可能也就是访问元组:

tuple_list = [(1, 'a'), (2, 'b'), (3, 'c')]
print(tuple_list[0])  # 输出: (1, 'a')
print(tuple_list[1])  # 输出: (2, 'b')
print(tuple_list[0][0])  # 输出: 1 (访问第一个元组中的第一个元素)
print(tuple_list[1][1])  # 输出: 'b' (访问第二个元组中的第二个元素)

2.3 字典的修改

2.3.1 直接修改字典元素

        你可以通过直接指定键来修改字典中的值。如果键不存在,会新增该键值对:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 修改 'age' 键对应的值
my_dict['age'] = 26
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}# 如果键不存在,添加新的键值对
my_dict['gender'] = 'Female'
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'gender': 'Female'}

2.3.2 使用 update() 方法修改字典

        update() 方法可以用于修改字典中的元素。你可以传入一个字典或键值对(可以是一个可迭代对象,例如关键字参数元组列表):

# 修改现有的键值对
my_dict.update({'age': 27, 'city': 'Los Angeles'})
print(my_dict)  # 输出: {'name': 'Alice', 'age': 27, 'city': 'Los Angeles', 'gender': 'Female'}# 通过传入键值对的元组列表来修改或添加元素
my_dict.update([('age', 28), ('gender', 'Male')])
print(my_dict)  # 输出: {'name': 'Alice', 'age': 28, 'city': 'Los Angeles', 'gender': 'Male'}

2.3.3 删除字典元素

        使用 delpop() 可以删除字典中的键值对:

# 使用 del 删除键值对
del my_dict['city']
print(my_dict)  # 输出: {'name': 'Alice', 'age': 28, 'gender': 'Male', 'country': 'USA'}
# 使用 pop() 删除并返回值
removed_value = my_dict.pop('age')
print(removed_value)  # 输出: 28
print(my_dict)  # 输出: {'name': 'Alice', 'gender': 'Male', 'country': 'USA'}

2.3.4 清空字典

        clear() 方法可以清空字典中的所有键值对:

# 使用 clear() 清空字典
my_dict.clear()
print(my_dict)  # 输出: {}

2.4 字典方法

2.4.1 keys()

        返回字典中所有的键:

my_dict = {'a': 1, 'b': 2}
print(my_dict.keys())  # 输出: dict_keys(['a', 'b'])

2.4.2 values()

        返回字典中所有的值:

my_dict = {'a': 1, 'b': 2}
print(my_dict.values())  # 输出: dict_values([1, 2])

2.4.3 update()

        更新字典,可以传入另一个字典、键值对或可迭代的键值对序列。如果键已经存在,会更新值;如果键不存在,会添加新键值对

my_dict = {'a': 1, 'b': 2}
my_dict.update({'b': 3, 'c': 4})
print(my_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}

2.4.4 fromkeys()

        创建一个新字典,以指定的键创建字典,并为每个键设置默认值。可以传递一个可迭代对象作为键和一个可选的默认值:

keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys, 0)
print(new_dict)  # 输出: {'a': 0, 'b': 0, 'c': 0}

2.4.5 setdefault()

        如果键不存在于字典中,则将其添加,并将值设置为提供的默认值。如果键已经存在,则不对该键做任何修改:

my_dict = {'a': 1, 'b': 2}
print(my_dict.setdefault('c', 3))  # 输出: 3
print(my_dict.setdefault('a', 3))  # 输出: 1

2.4.6 clear()

        清空字典中的所有元素:

my_dict = {'a': 1, 'b': 2}
my_dict.clear()
print(my_dict)  # 输出: {}

2.4.6 copy()

        返回字典的浅拷贝。拷贝后的字典不会影响原字典:

my_dict = {'a': 1, 'b': 2}
new_dict = my_dict.copy()
print(new_dict)  # 输出: {'a': 1, 'b': 2}

2.4.7 items()

        返回字典中所有键值对,以元组列表的形式返回。可以用于遍历字典:

my_dict = {'a': 1, 'b': 2}
print(my_dict.items())  # 输出: dict_items([('a', 1), ('b', 2)])

2.4.8 get()

        返回指定键的值,如果键不存在,返回 None(或指定的默认值):

my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a'))  # 输出: 1
print(my_dict.get('c', 'Not Found'))  # 输出: 'Not Found'

3. 完整示例

        下面是一个完整的 Python 示例,展示了字典的创建、修改、访问以及使用一些常见的字典方法:

# 创建字典
student = {"name": "Alice",        # 键值对: "name" -> "Alice""age": 20,              # 键值对: "age" -> 20"courses": ["Math", "Science"],  # 键值对: "courses" -> ["Math", "Science"]
}# 访问字典的值
print("Name:", student["name"])  # 输出: Alice
print("Age:", student.get("age"))  # 输出: 20# 使用 get 方法访问一个不存在的键,提供默认值
print("Gender:", student.get("gender", "Not Specified"))  # 输出: Not Specified# 修改字典中的值
student["age"] = 21  # 修改 age 的值
print("Updated Age:", student["age"])  # 输出: 21# 向字典中添加新的键值对
student["address"] = "123 Main St"
print("Address:", student["address"])  # 输出: 123 Main St# 使用 update() 方法修改多个键值对
student.update({"name": "Bob", "age": 22})
print("Updated Name:", student["name"])  # 输出: Bob
print("Updated Age:", student["age"])  # 输出: 22# 使用 keys(), values(), items() 方法
print("Keys:", student.keys())  # 输出: dict_keys(['name', 'age', 'courses', 'address'])
print("Values:", student.values())  # 输出: dict_values(['Bob', 22, ['Math', 'Science'], '123 Main St'])
print("Items:", student.items())  # 输出: dict_items([('name', 'Bob'), ('age', 22), ('courses', ['Math', 'Science']), ('address', '123 Main St')])# 删除字典中的键值对
student.pop("address")  # 删除 "address" 键值对
print("After pop:", student)  # 输出: {'name': 'Bob', 'age': 22, 'courses': ['Math', 'Science']}# 使用 popitem() 删除并返回字典中的最后一个键值对
last_item = student.popitem()
print("Popped item:", last_item)  # 输出: ('courses', ['Math', 'Science'])# 清空字典
student.clear()
print("After clear:", student)  # 输出: {}# 使用 fromkeys 创建一个新字典
new_dict = dict.fromkeys(["a", "b", "c"], 0)
print("New Dictionary:", new_dict)  # 输出: {'a': 0, 'b': 0, 'c': 0}
  1. 字典创建:我们使用大括号 {} 来创建字典,并指定键值对。字典的键是唯一的,值可以是任何数据类型。
  2. 访问字典的值:我们通过 dict[key] 或 dict.get(key) 来访问字典中的值。get() 方法可以提供默认值以避免键不存在时报错。
  3. 修改字典的值:通过 dict[key] = value 可以修改字典中的值。
  4. 添加新的键值对:使用相同的方式通过键来添加新的键值对。
  5. 使用 update() 方法:可以批量更新字典中的多个键值对。
  6. 遍历字典:通过 keys() 获取所有的键,values() 获取所有的值,items() 获取所有的键值对。
  7. 删除字典元素:使用 pop() 删除指定的键值对,popitem() 删除并返回最后一个键值对。
  8. 清空字典clear() 方法会删除字典中的所有元素。
  9. 创建新字典fromkeys() 方法通过指定的键创建新字典,并可以为每个键指定一个默认值。

4. 总结

【如果想学习更多深度学习文章,可以订阅一下热门专栏】

  • 《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客
  • 《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客
  • 《小白读透AI原理》_十二月的猫的博客-CSDN博客

如果想要学习更多pyTorch/python编程的知识,大家可以点个关注并订阅,持续学习、天天进步你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~

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

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

相关文章

每日一题——两数相加

两数相加 问题描述问题分析解题思路代码实现代码解析注意事项示例运行总结 问题描述 给定两个非空链表,表示两个非负整数。链表中的每个节点存储一个数字,数字的存储顺序为逆序(即个位在链表头部)。要求将这两个数字相加&#xff…

制作自定义镜像

1. 确定软件包 确定自己的环境都需要哪些命令,然后,从镜像文件或者yum源下载响应的安装包。 bash基本是必选的 (bash-5.1.8-10.oe2203sp2.aarch64.rpm) vim也是有必要的 (vim-enhanced-9.0-15.oe2203sp2.aarch64.rpm…

WHAT - 前端性能指标

目录 核心 Web Vitals(Core Web Vitals)加载性能指标网络相关指标交互和响应性能指标内存与效率指标推荐的监控工具优化策略与建议推荐学习路线 作为前端开发者,理解并掌握关键的性能指标对优化 Web 应用至关重要。 以下是前端性能优化中常见…

C++20 模块:告别头文件,迎接现代化的模块系统

文章目录 引言一、C20模块简介1.1 传统头文件的局限性1.2 模块的出现 二、模块的基本概念2.1 模块声明2.2 模块接口单元2.3 模块实现单元 三、模块的优势3.1 编译时间大幅减少3.2 更好的依赖管理3.3 命名空间隔离 四、如何使用C20模块4.1 编译器支持4.2 示例项目4.3 编译和运行…

Apache Hudi 性能测试报告

一、测试背景 数据湖作为一个集中化的数据存储仓库,支持结构化、半结构化以及非结构化等多种数据格式,数据来源包含数据库数据、增量数据、日志数据以及数仓上的存量数据等。数据湖能够将这些不同来源、不同格式的数据集中存储和管理在高性价比的分布式存储系统中,对外提供…

sql靶场5-6关(报错注入)保姆级教程

目录 sql靶场5-6关(报错注入)保姆级教程 1.第五关 1.步骤一(闭合) 2.步骤二(列数) 3.报错注入深解 4.报错注入格式 5.步骤三(数据库表名) 6.常用函数 7.步骤四(表…

OSPF-单区域的配置

一、单区域概念: 单区域OSPF中,整个网络被视为一个区域,区域ID通常为0(骨干区域)。所有的路由器都在这个区域内交换链路状态信息。 补充知识点: OSPF为何需要loopback接口: 1.Loopback接口的…

LeetCode100之二叉树的直径(543)--Java

1.问题描述 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例1 输入:root [1,2,3,4,5] 输出&#…

C语言每日一练——day_4

引言 针对初学者,每日练习几个题,快速上手C语言。第四天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…

工作流编排利器:Prefect 全流程解析

工作流编排利器:Prefect 全流程解析 本文系统讲解了Prefect工作流编排工具,从基础入门到高级应用,涵盖任务与流程管理、数据处理、执行器配置、监控调试、性能优化及与其他工具集成等内容,文末项目实战示例,帮助读者全…

Web Workers 客户端 + 服务端应用

一. Web Workers 客户端应用 使用 JavaScript 创建 Web Worker 的步骤如下: 1.创建一个新的 JavaScript 文件,其中包含要在工作线程中运行的代码(耗时任务)。该文件不应包含对 DOM 的引用,因为在工作线程中无法访问 …

大模型工具Ollama存在安全风险

国家网络安全通报中心:大模型工具Ollama存在安全风险 来源:国家网络与信息安全信息通报中心 3月3日,国家网络安全通报中心发布关于大模型工具Ollama存在安全风险的情况通报,内容如下: 据清华大学网络空间测绘联合研…

LINUX系统安装+添加共享目录

一、前言 Windows或mac系统中创建Linux工作环境是基于VMware和SL(Scientific Linux),下面分别安装二者。 二、VMware软件安装及注册 1、双击VMware安装包 2、点击下一步 3、 勾选接受许可,并点击下一步 4、更改路径(建议更改为容易找到的路…

BI 工具响应慢?可能是 OLAP 层拖了后腿

在数据驱动决策的时代,BI 已成为企业洞察业务、辅助决策的必备工具。然而,随着数据量激增和分析需求复杂化,BI 系统“卡”、“响应慢”的问题日益突出,严重影响分析效率和用户体验。 本文将深入 BI 性能问题的根源,并…

基于SSM+Vue的汽车维修保养预约系统+LW示例

1.项目介绍 系统角色:管理员、员工、用户功能模块:用户管理、员工管理、汽车类型管理、项目类型管理、维修/预约订单管理、系统管理、公告管理等技术选型:SSM,vue(后端管理web),Layui&#xff…

在rocklinux里面批量部署安装rocklinx9

部署三台Rockylinux9服务器 实验要求 1. 自动安装ubuntu server20以上版本 2. 自动部署三台Rockylinux9服务器,最小化安装,安装基础包,并设定国内源,设静态IP 实验步骤 安装软件 # yum源必须有epel源 # dnf install -y epel-re…

Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)

背景:问题如上标题,H3C所有交换机配置的model都是comware 解决方案: 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了,只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址:https://git…

C++学习之格斗小游戏综合案例

C格斗游戏效果视频 1.案例简介 #include "broadSword.h" //构造函数 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》

导语​ "你是否想过用Python开发一款可玩性高的双人合作游戏&#xff1f;本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏&#xff01;包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点&#xff0c;文末提供完整代码包下载&#xff01;" 哈…