【Python探索之旅】字典

字典的基本特性

创建字典

 修改字典

添加键值对 

 删除键值对

字典方法

 遍历字典

 完结撒花​

前言

字典是 Python 中内建的一种具有弹性储存能力的数据结构,可存储任意类型对象,与序列使用整数索引不同,它使用键(key)进行索引。

通常任何不变类型的对象均可作为索引,比如数字,字符串和元组,列表可以被修改,不可作为键。由于键作为索引使用,所以它必须是唯一的。

字典的每个键都有对应的值 (value),键值对用冒号 “:” 分割,每个键值对之间用逗号 “,” 分割,整个字典包括在花括号 {} 中。

注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict 

字典的基本特性

  1. 无序性:字典中的元素没有固定的顺序,这意味着你不能通过索引来访问字典中的元素。
  2. 可变性:字典是可变的,你可以添加、删除或修改字典中的键值对。
  3. 键的唯一性:字典中的键是唯一的,不允许重复。如果尝试添加重复的键,新的值会覆盖旧的值。
  4. 键的不可变性:字典的键必须是不可变的,如字符串、数字或元组等。值可以是任何类型,包括列表、字典或其他可变类型。

字典的性能

字典的查找、插入和删除操作的平均时间复杂度为O(1),这使得字典成为处理大量数据时的理想选择。字典的实现基于哈希表,它通过计算键的哈希值来快速定位键值对。

字典的应用场景

字典在许多场景中都非常有用,例如:

  • 数据库查询:将查询结果存储为字典,便于访问和处理。
  • 配置文件:使用字典来存储程序的配置选项。
  • 数据分析:在数据处理和分析中,字典常用于存储和处理统计数据。
  • 缓存系统:字典可以作为缓存系统的基础,快速存储和检索数据。

字典的注意事项

  • 字典的键必须是不可变的,如果尝试使用可变对象作为键,会导致错误。
  • 字典的键是唯一的,如果添加重复的键,新的值会覆盖旧的值。
  • 字典是无序的,如果需要有序的字典,可以使用 collections.OrderedDict

 

 创建字典

# 创建一个空字典
empty_dict = {}# 创建一个带有键值对的字典
dict_with_values = {'name': 'Alice', 'age': 30, 'city': 'New York'}

可以使用方括号 [] 运算符访问字典中的,其中方括号内指定要访问的键: 

person = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(person['name'])  # 输出: Alice

 修改字典

字典是可变的,可以通过键来修改对应的值:

person = {'name': 'Alice', 'age': 30, 'city': 'New York'}
person['age'] = 31  # 修改年龄
print(person)  # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York'}

添加键值对 

在Python,我们可以通过三种方式来添加字典的键值对分别是方括号 [] 运算符、update() 方法

setdefault() 方法

setdefault() 方法将指定键及其默认值添加到字典中。如果键已存在,则返回其值。

# 使用方括号运算符
my_dict = {}
my_dict['name'] = 'John Doe'
my_dict['age'] = 30# 使用update()方法
my_dict.update({'salary': 5000, 'department': 'IT'})# 使用setdefault()方法
my_dict.setdefault('address', '123 Main Street')# 打印字典
print(my_dict)

输出结果

{'name': 'John Doe', 'age': 30, 'salary': 5000, 'department': 'IT', 'address': '123 Main Street'}

请注意,使用 [] 运算符添加键值对时,如果键已存在,则会覆盖其值。使用 update()setdefault() 方法时,如果键已存在,则不会覆盖其值 

 删除键值对

在Python,我们可以通过三种方式来删除字典的键值对分别是del 语句、pop() 方法、popitem() 方法

示例

# 使用del语句
my_dict = {'name': 'John Doe', 'age': 30, 'salary': 5000}
del my_dict['age']# 使用pop()方法
my_dict.pop('salary')# 使用popitem()方法
my_dict.popitem()# 打印字典
print(my_dict)

输出

{'name': 'John Doe'}

 请注意,使用 del 语句删除键值对后,该键值对将从字典中永久删除。使用 pop()popitem() 方法删除键值对后,可以将返回的键值对重新添加到字典中。

 

字典方法

Python提供了多种字典方法来操作字典:

dict.keys()返回字典的所有键。
dict.values()          返回字典的所有值。
dict.items()返回字典的所有键值对。
dict.get(key[, default])返回指定键的值,如果键不存在,则返回默认值(可选)。
dict.pop(key[, default])删除指定键的键值对,并返回其值。如果键不存在,且提供了默认值,则返回默认值。
dict.popitem()随机删除一个键值对,并返回该键值对。
dict.clear()清空字典中的所有键值对。

 遍历字典

my_dict = {'name': 'John Doe', 'age': 30, 'salary': 5000}for key, value in my_dict.items():print(key, value)

输出

name John Doe
age 30
salary 5000

请注意,在遍历字典时,字典的大小和内容可能会发生变化。因此,在遍历过程中修改字典时要小心。

 完结撒花

Python的字典是一种非常强大和灵活的数据结构,它提供了高效的键值对存储和访问机制。字典的无序性、可变性和键的唯一性使得它在处理复杂数据时非常有用。通过掌握字典的基本操作和方法,可以有效地利用字典来解决实际编程中的问题。

 

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

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

相关文章

CSS三大选择器

CSS三大选择器 1 元素选择器2 id选择器3 class选择器 1 元素选择器 说明 根据标签名确定样式的作用范围语法为 元素名 {}样式只能作用到同名标签上,其他标签不可用相同的标签未必需要相同的样式,会造成样式的作用范围太大 代码 <head><meta charset"UTF-8&quo…

浅析张量分解(Tensor Decomposition)

文章目录 Q&A矩阵分解方法 B a s i c Basic Basic M F MF MF&#xff08;Basic Matrix Factorization&#xff09; R e g u l a r i z e d Regularized Regularized M F MF MFRegularized MF的数学推导Regularized MF 的迭代更新公式【具体理论&#xff1a;[梯度下降理论…

Java小游戏之汤姆猫

背景&#xff1a; 博主写过羊了个羊小游戏&#xff0c;客户觉得羊了个羊同学写过了&#xff0c;想换一个&#xff0c;于是笔者想到了汤姆猫。就是那个以前在苹果手机上的猫。 过程&#xff1a; 初始会有一个猫的图片展示&#xff0c;然后你点击按钮&#xff0c;猫会有不同动作…

车载以太网自动化测试套件(SOME/IP)- AETP. TC8 SOME/IP

概述 SOME/IP (Scalable service-Oriented Middleware over IP) 作为车载以太网的一种通信协议&#xff0c;在智能汽车通信领域受到广泛应用。对于应用SOME/IP协议的车内控制器来说&#xff0c;标准化的测试能够为车内通信提供更加可靠的保障。 AETP&#xff08;Automotive E…

GPT大模型不再遥不可及:本地化部署让每个人都能拥有

本地化部署是GPT发展的一个趋势。 本地化部署指的是将大模型部署在用户自己的设备上&#xff0c;而不是依赖于云服务商提供的接口。本地化部署有以下几个优势&#xff1a; 数据完全私有化&#xff0c;降低数据丢失和泄露风险&#xff0c;对数据安全性和私密性有保障。 降低使…

【iOS】RunLoop详解(二)

RunLoop详解&#xff08;二&#xff09; RunLoop 的概念RunLoop 与线程的关系RunloopRunloop与线程的关系RunLoop对外的接口Runloop的Mode应用场景举例举例说明小结 RunLoop 的内部逻辑RunLoop的底层实现苹果用RunLoop实现的功能AutoreleasePool事件响应手势识别界面更新定时器…

基于MCAL的S32K312 SPI使用

本文参考“大胡子喵喵猪”大佬《S32K312配置SPI&#xff08;基于MCAL&#xff09;》https://blog.csdn.net/m0_64944741/article/details/134930744 0、简介 相比于参考文章&#xff0c;本文基于S32K312 介绍SPI的使用&#xff0c;主要是记录开发流程&#xff0c;本文基于《基…

Winform自定义控件 —— 开关

在开始阅读本文之前&#xff0c;如果您有学习创建自定义控件库并在其他项目中引用的需求&#xff0c;请参考&#xff1a;在Visual Studio中创建自定义Winform控件库并在其他解决方案中引用https://blog.csdn.net/YMGogre/article/details/126508042 0、引言 由于 Winform 框架并…

FebHost:为什么企业需要注册保加利亚.BG域名?

在当今全球化的商业环境中&#xff0c;对于与保加利亚市场息息相关的企业而言&#xff0c;选择合适的域名至关重要。.BG域名作为企业在线身份的重要组成部分&#xff0c;提供了多重利好&#xff0c;成为业内不容忽视的战略资源。 首先&#xff0c;地域标识性强是.BG域名的一大…

AI Agent是什么?未来如何发展

AI Agnt是什么 AI代理&#xff08;AI Agent&#xff09;是指一种利用人工智能技术来执行特定任务或解决特定问题的自主软件程序。这些代理通过学习和模拟人类行为或特定领域的知识&#xff0c;能够在无需人为干预的情况下完成复杂的任务。AI代理广泛应用于多个领域&#xff0c…

Python筑基之旅-溯源及发展

目录 一、Python的起源 二、Python的版本更替及变化 三、Python的优缺点 四、Python的发展方向 五、Python之禅 六、推荐专栏/主页&#xff1a; 1、Python函数之旅&#xff1a;Functions 2、Python算法之旅&#xff1a;Algorithms 3、个人主页&#xff1a;https://mye…

探索中国文本到视频AI模型——Vidu

引言 随着人工智能技术的不断进步&#xff0c;我们见证了从文本到视频内容生成的革命。最近&#xff0c;一个名为Vidu的中国文本到视频AI模型引起了全球的关注。由清华大学和中国AI初创公司声书科技联合开发的Vidu&#xff0c;于2024年4月27日宣布&#xff0c;它声称能够生成高…