一次搞懂 Python 字典!Python字典的20种神奇用法

目录

引言

1. 创建字典

2. 访问字典元素

3. 添加或更新元素

4. 删除元素

5. 检查键是否存在

6. 获取字典的长度

7. 遍历字典

8. 合并字典

9. 字典推导式

10. 获取所有键

11. 获取所有值

12. 获取所有键值对

13. 从字典中获取值

14. 设置默认值

15. 清空字典

16. 字典复制

17. 从keys创建字典

18. 字典视图对象

19. 排序字典

20. 字典合并的新方法(Python 3.9+)



引言

Python 字典(Dictionary)是数据结构中的一种重要类型。它以键值对的形式存储数据,具有快速查找的特性。今天我们将通过生动有趣的案例,来探讨字典的20个经典操作,帮助大家深入理解和掌握这些概念。

1. 创建字典

字典可以通过花括号 {} 或 dict() 函数来创建。

# 使用花括号创建
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 使用 dict() 函数创建
my_dict = dict(name='Alice', age=25, city='New York')

2. 访问字典元素

通过键来访问字典中的值。

name = my_dict['name']
print(name)  # 输出: Alice

3. 添加或更新元素

通过键来添加或更新字典中的值。

my_dict['email'] = 'alice@example.com'  # 添加新元素
my_dict['age'] = 26  # 更新已有元素
print(my_dict)

4. 删除元素

使用 del 语句或 pop() 方法来删除字典中的元素。

# 使用 del 语句
del my_dict['city']

# 使用 pop() 方法
age = my_dict.pop('age')
print(my_dict)
print(age)  # 输出: 26

5. 检查键是否存在

使用 in 关键字来检查字典中是否存在某个键。

if 'name' in my_dict:
    print('Name exists in the dictionary')

6. 获取字典的长度

使用 len() 函数来获取字典中的键值对数量。

length = len(my_dict)
print(length)  # 输出: 2

7. 遍历字典

可以使用 for 循环来遍历字典的键、值或键值对。

# 遍历键
for key in my_dict:
    print(key)

# 遍历值
for value in my_dict.values():
    print(value)

# 遍历键值对
for key, value in my_dict.items():
    print(f'{key}: {value}')

8. 合并字典

使用 update() 方法来合并两个字典。

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

9. 字典推导式

通过字典推导式来创建字典。

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

10. 获取所有键

使用 keys() 方法来获取字典中的所有键。

keys = my_dict.keys()
print(keys)

11. 获取所有值

使用 values() 方法来获取字典中的所有值。

values = my_dict.values()
print(values)

12. 获取所有键值对

使用 items() 方法来获取字典中的所有键值对。

items = my_dict.items()
print(items)

13. 从字典中获取值

使用 get() 方法来安全地获取字典中的值,如果键不存在,则返回默认值。

name = my_dict.get('name', 'Unknown')
print(name)  # 输出: Alice
nickname = my_dict.get('nickname', 'Unknown')
print(nickname)  # 输出: Unknown

14. 设置默认值

使用 setdefault() 方法来获取字典中的值,如果键不存在则设置默认值。

nickname = my_dict.setdefault('nickname', 'Alice')
print(my_dict)

15. 清空字典

使用 clear() 方法来清空字典中的所有元素。

my_dict.clear()
print(my_dict)  # 输出: {}

16. 字典复制

使用 copy() 方法来创建字典的浅拷贝。

new_dict = my_dict.copy()
print(new_dict)

17. 从keys创建字典

使用 fromkeys() 方法创建一个新的字典,其中的键来自于一个序列,值为提供的默认值。

keys = ['name', 'age', 'city']
new_dict = dict.fromkeys(keys, 'unknown')
print(new_dict)  # 输出: {'name': 'unknown', 'age': 'unknown', 'city': 'unknown'}

18. 字典视图对象

字典的 keys()values()items() 方法返回的都是视图对象,这些对象会随着字典的变化而变化。

keys_view = my_dict.keys()
print(keys_view)
my_dict['age'] = 30
print(keys_view)  # 输出包含更新后的键

19. 排序字典

使用 sorted() 函数对字典的键或值进行排序。

sorted_keys = sorted(my_dict.keys())
sorted_values = sorted(my_dict.values())
print(sorted_keys)
print(sorted_values)

20. 字典合并的新方法(Python 3.9+)

在Python 3.9及以上版本,可以使用 | 运算符来合并字典。

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged_dict = dict1 | dict2
print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}

通过以上20个经典操作,相信大家对Python字典的使用有了更深入的了解和掌握。在实际编程中,灵活运用这些操作,可以大大提高代码的简洁性和效率。希望这篇文章能够帮助你更好地理解和使用Python字典!

 

Python魔法方法__prepare__是啥?来敲黑板了!-CSDN博客文章浏览阅读1.1k次,点赞29次,收藏15次。在Python中,__prepare__是一个特殊的方法,它属于元类(metaclass)的范畴。当一个类被创建时,__prepare__会在类定义体被执行之前被调用。它的主要职责是准备一个字典或映射对象,这个对象将作为类命名空间的基础,用于存储类定义中的属性和方法。简而言之 ,__prepare__为即将诞生的类准备了一个“孕育环境”。https://blog.csdn.net/xyh2004/article/details/140011553

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《RepViT Revisiting Mobile CNN From ViT Perspective》

期刊:CVPR 年份:2024 代码:http://https: //github.com/THU-MIG/RepViT 摘要 最近,与轻量级卷积神经网络(CNN)相比,轻量级视觉Transformer(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。研究人员已…

鸿蒙星河NEXT学习笔记

1.1 字符串 // 变量的存储和修改(string number boolean) // 1. 变量存储 // 1.1 字符串 string 类型 // 注意点1:字符串需要用引号引起来(单引双引号)字符串 "字符串" // 注意点2:存储的时候&a…

【pytorch12】什么是梯度

说明 导数偏微分梯度 梯度:是一个向量,向量的每一个轴是每一个方向上的偏微分 梯度是有方向也有大小,梯度的方向代表函数在当前点的一个增长的方向,然后这个向量的长度代表了这个点增长的速率 蓝色代表比较小的值,红色…

【吊打面试官系列-MyBatis面试题】模糊查询 like 语句该怎么写?

大家好&#xff0c;我是锋哥。今天分享关于 【模糊查询 like 语句该怎么写?】面试题&#xff0c;希望对大家有帮助&#xff1b; 模糊查询 like 语句该怎么写? 第 1 种&#xff1a;在 Java 代码中添加 sql 通配符。 string wildcardname “%smi%”; list<name> names …

煤都鄂尔多斯的“模”变

去年&#xff0c;《中国日报》曾经报道了这样一个故事。 从小生活在鄂尔多斯市准格尔旗三宝窑村的肖存海&#xff0c;如今对家园有了新的印象。村子附近曾经满是沟壑纵横&#xff0c;满眼荒芜的矿坑。如今&#xff0c;这些大地的伤疤不见了&#xff0c;取而代之的是一排排的苹果…

星火认知大模型Spark3.5 api调用 #AI夏令营 #Datawhale #夏令营

环境安装 pip install --upgrade -q spark_ai_python 官网注册 链接&#xff1a;https://console.xfyun.cn/app/myapp 官方会在报名成功后&#xff0c;立即发放星火大模型 Spark Max的 API 额度助力我们完成赛事&#xff0c; 200w Tokens 任你花&#xff01; 暑期有四场夏令营…

智慧水利3D可视化模拟仿真系统定制让您足不出门也能“掌控全厂”

在当今信息爆炸的时代&#xff0c;3d数据可视化大屏系统以其直观、动态的展示方式&#xff0c;让您轻松把握数据趋势&#xff0c;助力科学决策&#xff0c;正成为企业、政府乃至城市规划等领域的得力助手。 无论是企业管理、城市规划还是交通管理&#xff0c;3D可视化数据大屏系…

【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第十二章)Wifi透传实验例程说明

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 适用于板卡型号&#xff1a; 紫光同创PG2L50H_MBG324开发平台&#xff08;盘古PGX-Nano&#xff09; 一&#xff1a;…

Docker 一篇到位

目录 01. Docker使用导航 02. Build Share Run 样例 03. 理解容器 04. 安装 Docker 05. Docker 样例&#xff08;常见命令使用&#xff09; 下载镜像 启动容器 修改页面 保存镜像 docker commit docker save docker load 分享社区 docker login docker tag do…

【Leetcode 566】【Easy】重塑矩阵

目录 题目描述 整体思路 具体代码 题目描述&#xff1a; 原题链接 整体思路 首先要确保重塑后的矩阵内元素个数和原矩阵元素个数要相同&#xff0c;如果不同则原样返回原矩阵。 按行遍历顺序遍历原矩阵&#xff0c;设一个临时vector<int>存放新矩阵的每一行的元素…

Go线程实现模型-G

G 概述 一个G就代表一个goroutine(或称Go例程)&#xff0c;也与go函数相对应。作为编程人员&#xff0c;我们只是使用go语句向Go的运行时系统提交一个并发任务&#xff0c;而Go的运行时系统则会按照我们要求并发地执行它 Go编译器会把go语句变成对内部函数newproc的调用&…

张嘴就能生图?一分钟教会你使用魔法!(Stable Diffusion进阶:SDXL-Turbo)

大家好我是极客菌&#xff01;&#xff01;&#xff01;Stable Diffusion&#xff0c;一款基于深度学习的图像生成模型&#xff0c;以其强大的图像生成能力和个性化风格迁移能力&#xff0c;在艺术创作领域掀起了一场革命。而SDXL-Turbo&#xff0c;作为Stable Diffusion的进阶…

ADS基础教程23 - 有限元电磁仿真(FEM)可视化操作

EM介绍 一、引言二、FEM可视化操作流程1.打开可视化界面2.查看介质的网格3.设置网格颜色4.选择网格5.传感器选择6.编辑传感器7.选择频率8.动画 三、总结 一、引言 在ADS基础教程22中介绍了如何在ADS进行有限元电磁仿真&#xff08;FEM&#xff09;&#xff0c;本文将继续介绍F…

MD5算法详解

哈希函数 是一种将任意输入长度转变为固定输出长度的函数。 一些常见哈希函数有&#xff1a;MD5、SHA1、SHA256。 MD5算法 MD5算法是一种消息摘要算法&#xff0c;用于消息认证。 数据存储方式&#xff1a;小段存储。 数据填充 首先对我们明文数据进行处理&#xff0c;使其…

Jasper studio报表工具中,如何判断subDataSource()子报表数据源是否为空

目录 1.1、错误描述 1.2、解决方案 1.1、错误描述 今天在处理一个有关Jasper Studio报表模板制作的线上问题&#xff0c;需要根据某个报表子数据源是否为空&#xff0c;来决定对应的组件是否显示&#xff0c;找了好久的资料都没有实现&#xff0c;最后找到一种解决办法。就是…

专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了

Python 可能是极少数既简单又强大的编程语言中的一种。更重要的是&#xff0c;用它来编程是非常快乐的事。 今天给小伙伴们分享的是阿里“藏经阁”出品的专门给运维工程师设计的Python实战手册 废话不多说&#xff0c;下面把内容展示给大家 01 Python快速回顾 02 Python脚本…

Linux下SUID提权学习 - 从原理到使用

目录 1. 文件权限介绍1.1 suid权限1.2 sgid权限1.3 sticky权限 2. SUID权限3. 设置SUID权限4. SUID提权原理5. SUID提权步骤6. 常用指令的提权方法6.1 nmap6.2 find6.3 vim6.4 bash6.5 less6.6 more6.7 其他命令的提权方法 1. 文件权限介绍 linux的文件有普通权限和特殊权限&a…

【剑指Offer系列】68-二叉树的最近公共祖先(哈希)

思路&#xff1a;使用map存储每个节点的父节点&#xff0c;则两个节点的最近公共祖先&#xff0c;即二者的最近父节点 1、中序遍历二叉树&#xff08;当前节点的下一个节点&#xff09; 2、记录每个节点的父节点 3、列出p的族谱、q的族谱 4、寻找二者最近的祖先 class Soluti…

CesiumJS【Basic】- #041 绘制纹理线(Entity方式)- 需要自定义着色器

文章目录 绘制纹理线(Entity方式)- 需要自定义着色器1 目标2 代码2.1 main.ts3 资源文件绘制纹理线(Entity方式)- 需要自定义着色器 1 目标 使用Entity方式绘制纹理线 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer

美团外卖异地点餐怎么更改定位位置信息?

美团外卖异地点餐怎么更改定位位置信息&#xff1f; 1、打开「词令」关键词口令直达工具&#xff0c;输入词令「外卖红包88」&#xff0c;搜索直达该词令关联的目标&#xff0c;获得外卖红包天天领入口&#xff1b; 2、成功领取后&#xff0c;打开美团外卖APP&#xff0c;切换…