【Python入门】一篇掌握Python中的字典(创建、访问、修改、字典方法)【详细版】

🌈 个人主页:十二月的猫-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.rhkb.cn/news/34115.html

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

相关文章

LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?

快慢指针 为什么相遇后让快指针回到起点,再让快指针和慢指针都一步一步地走,它们就会在环的入口相遇? 复杂度 时间复杂度: O(n) 空间复杂度: O(1) public ListNode detectCycle(ListNode head) {ListNode slow head, fast head;ListNode …

HarmonyOS第24天:鸿蒙应用安全秘籍:如何为用户数据筑牢防线?

开篇引入 在数字化时代,我们的生活越来越依赖各种应用程序。从社交娱乐到移动支付,从健康管理到工作学习,应用已经渗透到生活的方方面面。然而,随着应用使用的日益频繁,用户隐私数据泄露的风险也在不断增加。 前几年&…

P2730 魔板 (写了巨久..有一些数字,字符,字符串之间的转换规则)

ac代码&#xff1a; #include<iostream> #include<map> #include<queue> using namespace std; map<string,int>mp1,mp2; map<string,string>mp3; queue<string>q; string str,res"12345678"; void pri(string str){if(resstr)…

Centos7使用docker搭建redis集群

前置准备&#xff1a; Centos7安装docker就不多说了… 本次目的是搭建3主3从&#xff08;当然你也可以按需扩展&#xff09;准备三台服务器&#xff0c;假定IP分别为&#xff1a;192.168.75.128、192.168.75.129、192.168.75.130安装 redis&#xff1a; #拉取redis docker p…

Java 用While语句判断密码是否输入正确

package com.MyJava; import java.util.Scanner;public class While {public static void main(String[] args) {Scanner Myscan new Scanner(System.in); int i 0,n 3; //n为有效密码次数System.out.print("请输入密码&#xff1a;");String Password Myscan.ne…

Browser Copilot 开源浏览器扩展,使用现有或定制的 AI 助手来完成日常 Web 应用程序任务。

一、软件介绍 文末提供源码和开源扩展程序下载 Browser Copilot 是一个开源浏览器扩展&#xff0c;允许您使用现有或定制的 AI 助手来帮助您完成日常 Web 应用程序任务。 目标是提供多功能的 UI 和简单的框架&#xff0c;以实现和使用越来越多的 copilots&#xff08;AI 助手&…

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要&#xff1a;本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势&#xff0c;包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例&#xff0c;并提供了调参实战指南&#xff0c;最后对蓝耘 …

3.2 组件Props的TS高级类型校验模式

文章目录 1. 组件Props校验的核心价值2. 基础类型校验回顾2.1 基本类型声明2.2 类型系统限制3. 高级类型校验模式3.1 类型模板字面量3.2 条件类型约束3.3 递归类型结构4. 泛型组件模式4.1 基础泛型定义4.2 泛型约束扩展5. 高级联合类型应用5.1 动态表单校验5.2 状态机驱动类型6…

Vim软件使用技巧

目录 Demo Vim怎么看一个文件的行号&#xff0c;不用打开文件的前提下&#xff1f;进入文件后怎么跳转到某一行? 不打开文件查看行号&#xff08;查看文件的方法&#xff09; 方法1、使用命令行工具统计行数 方法2、通过vim的 - 参数查看文件信息 进入文件后跳转到指定行…

C 语 言 --- 二 维 数 组 的 应 用

C 语 言 --- 二 维 数 组 的 应 用 第 一 题 - - - 冒 泡 排 序冒 泡 排 序冒 泡 排 序 的 原 理 第 二 题 - - - 回 型 矩 阵特 点 第 三 题 - - - 蛇 形 矩 阵总结 &#x1f4bb;作者简介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &…

微信小程序实现根据不同的用户角色显示不同的tabbar并且可以完整的切换tabbar

直接上图上代码吧 // login/login.js const app getApp() Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函…

CTA重建:脑血管重建,CT三维重建,三维建模 技术,实现

CTA&#xff08;CT血管造影&#xff09;是一种基于CT扫描的医学成像技术&#xff0c;主要用于血管系统的三维重建和可视化。脑血管重建是CTA的重要应用之一&#xff0c;能够帮助医生诊断脑血管疾病&#xff08;如动脉瘤、狭窄、畸形等&#xff09;。以下是实现CTA脑血管重建、C…

告别XML模板的繁琐!Word文档导出,easy!

word模板导出 最近项目中有个功能&#xff0c;导出月报&#xff0c;发现同事使用了docx格式模板,感觉比之前转成xml的简单多了&#xff0c;这边记录下使用方法。 xml方式导出word,模板太复杂了 资料 poi-tl 一个基于Apache POI的Word模板引擎&#xff0c;也是一个免费开源的Jav…

Vue 过滤器深度解析与应用实践

文章目录 1. 过滤器概述1.1 核心概念1.2 过滤器生命周期 2. 过滤器基础2.1 过滤器定义2.2 过滤器使用 3. 过滤器高级用法3.1 链式调用3.2 参数传递3.3 动态过滤器 4. 过滤器应用场景4.1 文本格式化4.2 数字处理4.3 数据过滤 5. 性能优化与调试5.1 性能优化策略5.2 调试技巧 6. …

ST电机库电流采样 三电阻单ADC

一、概述 下图是三电阻采样的电路结构 其中流过三相系统的电流I1、I2、I3遵循以下关系: 因此,为了重建流过普通三相负载的电流,在我们可以用以上公式计算的情况下,只需要对三相中的两相进行采样即可。 STM32的ADC可以很灵活的配置成同步采集两路ADC数据,…

【测试篇】打破测试认知壁垒,从基础概念起步

前言 &#x1f31f;&#x1f31f;本期讲解关于测试的基本概念相关知识介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…

SpringBoot MCP 入门使用

随着AI的火爆&#xff0c;最近发现MCP在未来确实大有可为&#xff0c;作为一名javaer怎么可以落后在历史洪流呢&#xff0c;根据官网和cursor也从零开始体验一下自定义mcp server。以后可以根据自己业务场景做出各种适合自身业务的工具。 至于什么是MCP 可以到https://modelcon…

@Autowired和@Resource的区别是?

前情回顾 正确使用Autowired Autowired 注解在构造器上的使用规则&#xff08;字段注入也挺好的&#xff09; 正确使用Resource 来源不同 Autowired的“爹”是Spring Resource的“爹”是Java&#xff08;JSR-250&#xff09; 这是一个规范&#xff0c;Spring对这个注解进行…

3.9/Q2,Charls最新文章解读!

文章题目&#xff1a;Association between remnant cholesterol and depression in middle-aged and older Chinese adults: a population-based cohort study DOI&#xff1a;10.3389/fendo.2025.1456370 中文标题&#xff1a;中国中老年人残留胆固醇与抑郁症的关系&#xff1…

无再暴露源站!群联AI云防护IP隐匿方案+防绕过实战

一、IP隐藏的核心原理 群联AI云防护通过三层架构实现源站IP深度隐藏&#xff1a; 流量入口层&#xff1a;用户访问域名解析至高防CNAME节点&#xff08;如ai-protect.example.com&#xff09;智能调度层&#xff1a;基于AI模型动态分配清洗节点&#xff0c;实时更新节点IP池回…