【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.mzph.cn/web/13338.shtml

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

相关文章

小白也会SQL:大模型改变交互方式(上)

在人工智能与自然语言处理交汇点,有一种技术正悄然改变与数据交互的方式——将日常语言转化为精准SQL查询。这一“text-to-sql”转换任务,使非专业人士也能轻松驾驭复杂的数据库操作,极大地拓宽了数据应用的边界。 然而,现有前沿…

linux系统查看服务器硬件信息

1、查看服务器型号、序列号 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型号 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

vue嵌套路由

一、嵌套 children配置 1.父类路由 mymusic 2.子类路由 musicson 1.创建MusicSon组件 <template><div><p>从前和后来</p><p>唯一</p><p>运气来的似有若无</p></div> </template><script>export defaul…

通俗易懂的策略模式讲解

什么是策略模式&#xff1f; 策略模式是一种设计模式&#xff0c;它允许你定义一系列的算法&#xff08;策略&#xff09;&#xff0c;并将每个算法封装成一个对象。这样&#xff0c;你可以轻松地切换不同的算法&#xff0c;而不需要改变原始代码。 一个简单的例子 假设你是…

这10款安卓APP,简直好用到爆!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频http://AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频 1.追书——追书神器 追书神器是小说追新大神&#xff0c;全网实…

摸鱼大数据——大数据导论

大数据导论 1、概念 大数据时代: 万物皆数据 ​ 数据概念: 人类的行为及产生的事件的一种记录称之为数据 ​ 数据价值: 对数据的内容进行深入分析&#xff0c;可以更好的帮助了解事和物在现实世界的运行规律 2、大数据诞生 大数据的诞生: 跟随着互联网的发展的,当全球互联…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s …

拧紧设备或工具的选型原则、常见类型和选型关键因素有哪些?

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 在工业生产领域&#xff0c;拧紧控制是一项至关重要的工艺环节。它涉及螺栓、螺母等紧固件的装配过程&#xff0c;直接关系到产品的质量和性能。因此&#xff0c;选择合适的拧紧设备或工具对于确保拧紧过程的准确性和稳…

[牛客网]——C语言刷题day4

答案&#xff1a;B 解析&#xff1a; a是数组首元素的地址,a1的步长是int&#xff0c;所以是2 &a是数组的首地址&#xff0c;&a1步长是int[5] ptr是int类型的指针&#xff0c;指向a数组的尾后位置&#xff0c;ptr-1的步长是int,所以是a数组的最后一个元素5 答案&am…

如何使用ffmpeg 实现10种特效

相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令&#xff0c;先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…

Element Plus/vue3 无限级导航实现

在使用element plus 时&#xff0c;最初要使用的就是导航组件了&#xff0c;官网上看到的也就是写死的一级/二级导航&#xff0c;那么如何设计一个无限级且动态的导航呢&#xff1f;毋庸置疑&#xff0c;递归。废话不多说&#xff0c;直接看代码和效果&#xff1a; 代码&#x…

Jmeter:录制脚本(操作文档)

新建线程组 打开jmeter&#xff0c;右键测试计划–>添加–>Threads(Users)–>点击"线程组" 添加录制控制器 右键线程组–>添加–>逻辑控制器–>点击"录制控制器" 添加HTTP代理服务器 右键工作台–>添加–>非测试元件–>…

YOLOv5改进 | Neck | 添加双向特征金字塔BiFPN【小白轻松上手 | 论文必备】

&#x1f680;&#x1f680;&#x1f680;本专栏所有的改进均可成功执行&#x1f680;&#x1f680;&#x1f680; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。但是针对不同的数据…

Linux 第三十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Kubernetes安装calico网络插件失败

今天啥也没干成&#xff0c;不想排版了。 接着昨天搭建k8s集群&#xff0c;安装calico插件&#xff0c;虚拟机一直卡。 # 在 master 节点上执行 # 下载 calico 配置文件&#xff0c;可能会网络超时 curl https://docs.tigera.io/archive/v3.25/manifests/calico.yaml -O # 修…

[svelte] 怎么引入fortawesome的icon样式

首先在项目的终端下执行以下命令 npm install fortawesome/fontawesome-free # 或者 yarn add fortawesome/fontawesome-free这样子可以把fontawsome的图标给下载到项目的对应文件中 一般都是在node_modules中 在fontawsome/fontawesome-free中就可以看到很多文件夹了 …

unapp写微信小程序封装水印相机组件怎么实现?

<template><view><!-- <cu-custom bgColor"bg-gradual-blue" :isBack"true"><block slot"backText">返回</block><block slot"content">编辑资料</block></cu-custom> --><…

三步在 vite 中配置 tailwindcss

前言 tailwindcss 是一个原子化的 css 工具&#xff0c;可以让你免于写 css&#xff0c;只写 html 即可原理&#xff1a;利用你写的 html 的 class 名称来生成 css 样式&#xff0c;理解为一个 postcss 插件或 loader 第一步&#xff1a;安装 tailwindcss npm i -D tailwind…

图片恢复的实用指南,为你拯救遗失的记忆!

随着科技的日新月异&#xff0c;我们的生活已被照片填满。它们记录着我们的喜怒哀乐&#xff0c;见证着每一个重要的时刻。但我们往往会因为各种原因将手机图片遗失&#xff0c;有什么方法可以恢复呢&#xff1f;本文将提供一份实用的图片恢复指南&#xff0c;帮助你找回那些遗…

ArrayList和LinkedList的使用

ArrayList List<> list new ArrayList<>(); LinkedList