PYTHON知识点学习-字典

🌈write in front🌈
🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由 Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️
📝个人主页:Aileen_0v0🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0🧸的PYTHON学习系列专栏——CSDN博客
🗼我的格言:"没有罗马,那就自己创造罗马~" 

目录

字典的介绍及创建

字典查找key

dictionary&list对比

字典的新增修改删除

理解字典操作的效率

字典的遍历

可哈希的类型


字典的介绍及创建

字典:是存储键值对的数据

键(key)

值(value)

根据 key 能够快速找到 value  ( 映射关系 )

例如: 学号 => 同学        名字 => 人

在 python 的字典中,可以同时包含佷多个键值对.

同时要求这些键,不能重复!

#1.创建字典
a = {}
print(type(a))
b = dict()
print(type(b))
#2.创建字典的同时设置初始值.
a ={"id":1 , "name" : "zhangsan"}

 字典a中,包含两个键值对.

(1)"id":1  key 就是"id",value 就是 1

(2)"name":  "zhangsan"  key 就是"name", value 就是"zhangsan"

一个字典中的  key  的类型 不一定都一样

一个字典中的  value  的类型  也不必都一样~

综上,key 和 value 对类型无约束

a ={"id":1 ,"name" : "zhangsan",}

最后一个键值对的逗号可写可不写,其它的必须加上逗号.

字典查找key

#1. 使用 in 来判定某个 key 是否在字典中存在.
a ={"id":1,"name":"zhangsan"
}print("id" in a)
print("classId" in a)# in 只是判定 key 是否存在, 和 value 无关!
print("zhangsan" in a)# not in 来判定 key 在字典中不存在
print("id" not in a)
print("classId" not in a)# 运行结果:
# True
# False
# False
# False
# True
#2. 使用 [ ] 来根据 key 获取到 value
a ={"id" : 1,"name" : "zhangsan",100 : "list"
}print(a["id"])
print(a["name"])
print(a[100])     #注意这里表示的是key100
print(a["classId"])# # 运行结果:
# 1
# zhangsan
# list
# # KeyError: 'classId'#因为找不到

在 Python 中,可以通过多层索引来查找嵌套字典中最里面的值

举个例子,假设有以下嵌套字典

my_dict = {'name': 'John','age': 30,'contacts': {'email': 'john@example.com','phone': {'mobile': '123-456-7890','home': '098-765-4321'}}
}

要查找最里面的电话号码,可以使用以下代码:

phone_number = my_dict['contacts']['phone']['mobile']
print(phone_number)  # 输出: '123-456-7890'

另外,如果不确定某个键是否存在,可以使用 get 方法来避免出错

phone_number = my_dict.get('contacts', {}).get('phone', {}).get('mobile')
print(phone_number)  # 输出: '123-456-7890'

如果某一层嵌套字典不存在,那么 get 方法就会返回一个空字典 {},这样就可以继续向下查找了。

dictionary&list对比

字典的新增修改删除

#1.在字典中新增元素,使用[ ] 来进行.
a = {"id" : 1,"name" : "zhangsan",
}# 这个操作就是往字典里插入新的键值对.
a["score"] = 90
print(a)#2. 在字典中, 根据 key 修改 value, 也是使用 [ ]来进行的~
a["score"] = 100
print(a)#3. 使用 pop 方法, 根据 key 来删除键值对~
a.pop("name")
print(a)
# 运行结果:
# {'id': 1, 'name': 'zhangsan', 'score': 90}
# {'id': 1, 'name': 'zhangsan', 'score': 100}
# {'id': 1, 'score': 100}

可以通过Python中的 update() 方法替换字典中的键值对。该方法接收一个字典作为参数,将该字典中的键值对替换到原字典中对应的键上。

以下是一个简单的示例代码:

dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"b": 4, "d": 5}dict1.update(dict2)print(dict1)

输出结果为:

{'a': 1, 'b': 4, 'c': 3, 'd': 5}

可以看到,字典dict2中的键值对已经被替换到了dict1中对应的键上,同时新增的键值对也被添加到了dict1中。如果键已经存在,则新值将取代旧值

小结:字典的各种操作,都是针对 key 来进行的!!
        从而,新增,删除, 获取value,修改value.....

理解字典操作的效率

遍历指的是:能够把一个可迭代对象,里面包含的元素依次取出,并进行一些操作.整个过程要求不重不漏.

字典被设计出来的初衷,不是为了遍历,而是为了增删查改.

字典是 哈希表,进行增删改查操作,效率度非常高!!

字典遍历效率就要一些.

哈希表 这个结构被设计的非常巧妙,能够以"常数级"时间复杂度来完成增删改查~

"常数级":无论字典中有多少元素~

新增,修改,查找 操作都是固定时间,不会因为元素多了,操作就慢了~

❗❗❗哈希表非常重要,后面会继续深入学习发博文

字典的遍历

#1 直接使用 for 循环来遍历字典
a = {"id": 1,"name":"zhangsan","score":90,
}for key in a:print(key,a[key])# 运行结果:
# id 1
# name zhangsan
# score 90

在C++ 或者 Java 中,哈希表里储存的键值对是无序的!

但在 Python 中还不一样~

Python 中做了特殊处理~~能够保证 遍历出来的顺序 和 插入进来的顺序相同~~

Python中的字典,不是单纯的一个哈希表

keys 获取字典中的所有 key

values 获取字典中的所有value

items 获取字典中的所有键值对~

a = {"id": 1,"name":"zhangsan","score":90,
}print(a.keys())
print(a.values())
print(a.items())# 运行结果:
# dict_keys(['id', 'name', 'score'])
# dict_values([1, 'zhangsan', 90])
# dict_items([('id', 1), ('name', 'zhangsan'), ('score', 90)])

keys 和 values 返回的结果,看起来像列表,又不完全是~~

自定义类型~~

使用的时候也可以把它当作列表来使用~~

items返回的 首先是一个列表一样的结构,里面每个元素又是一个元组,元组里面包含了键和值.

so 可以利用类似于自定义读取利用for方法去读取它的值一样去遍历取出,如下:

a = {"id": 1,"name":"zhangsan","score":90,
}for key,value in a.items():print(key,value)# 运行结果:# id 1# name zhangsan# score 90

可哈希的类型

哈希的概念
哈希技术是一种单向加密技术,也就是说,它可以将任何长度的原始消息转换成一个特定长度的哈希值,但无法从哈希值反推出原始消息。

哈希函数通常具有以下特点

- 压缩性:无论输入消息的长度多长,产生的哈希值长度固定。

- 易计算性:计算哈希值的操作很容易,即使处理的数据量很大。

- 抗碰撞性:难以找到两个不同的输入消息,其哈希值相同,也称为“哈希冲突”。

哈希技术近年来在越来越多的领域中得到了广泛的应用,比如密码学中的数字签名、身份认证、密码存储等,还有数据完整性校验、指纹识别、电子商务中的信任机制等

在 python 里专门提供了一个 hash 函数~

print(hash(0))
print(hash(3.14))
print(hash("hello"))
print(hash(True))# # 运行结果:
# 0
# 322818021289917443
# -5961696303172855508
# 1

通过上面代码运行结果可知:整数,浮点数,字符串,布尔值,元组以计算哈希值.--->可作为key

# 有的类型是不能计算哈希值的.
print(hash([1,2,3]))# 运行结果:
# TypeError: unhashable type: 'list'
print(hash({}))# # 运行结果:
# # TypeError: unhashable type: 'dict'

通过上面代码运行结果可知,列表,字典,不可以哈希.

summary:不可变(整数,浮点数,字符串,布尔值,元组)的对象可哈希,

                可变(字典,列表)的对象不可哈希

                 字典,列表,元组 在python中是非常常用的 内置类型~

                 相比于 int, str, float...

                 它们内部可以再包含其它元素~

                 它们属于 容器/集合类~

🍒字典的知识点就分享到这里啦~🍒

🍒喜欢就一键三连支持一下吧~🍒

🍒谢谢家人们!🍒

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

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

相关文章

Si24R2F+畜牧 耳标测体温开发资料

Si24R2F是针对IOT应用领域推出的新款超低功耗2.4G内置NVM单发射芯片。广泛应用于2.4G有源活体动物耳标,带实时测温计步功能。相较于Si24R2E,Si24R2F增加了温度监控、自动唤醒间隔功能;发射功率由7dBm增加到12dBm,距离更远&#xf…

el-table 垂直表头

效果如下&#xff1a; 代码如下&#xff1a; <template><div class"vertical_head"><el-table style"width: 100%" :data"getTblData" :show-header"false"><el-table-columnv-for"(item, index) in getHe…

Android图形-架构1

目录 引言 Android图形的关键组件&#xff1a; Android图形的pipeline数据流 BufferQueue是啥&#xff1f; 引言 Android提供用于2D和3D图形渲染的API&#xff0c;可与制造商的驱动程序实现代码交互&#xff0c;下面梳理一下Android图形的运作原理。 应用开发者通过三种方…

阿里后端开发:抽象建模经典案例

0.引言 在互联网行业&#xff0c;软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的&#xff0c;遵循的是人类世界的自然语言&#xff0c;而软件世界里通行的则是机器语言&#xff0c;两者间跨度太大&#xff0c;需要一座桥梁来联通&#xff0c;抽象建模便是打…

Ceph基础知识和基础架构认识

1 Ceph基础介绍 Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统&#xff0c;根据场景划分可以将Ceph分为三大块&#xff0c;分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里&#xff0c;比较常用到的是Ceph的块设备存储&#xff0c;比如在OpenStack项目…

Android开机动画

Android开机动画 1、BootLoader开机图片2、Kernel开机图片3、系统启动时&#xff08;BootAnimation&#xff09;动画3.1 bootanimation.zip位置3.2 bootanimation启动3.3 SurfaceFlinger启动bootanimation3.4 播放开机动画playAnimation3.6 开机动画退出检测3.7 简易时序图 4、…

【Vue】 Vue3 安装说明,适合小白新手

1、独立版本 我们可以在 Vue.js 的官网上直接下载最新版本, 并用 下载 Vue.js https://unpkg.com/vuenext 2、使用 CDN 方法 以下推荐国外比较稳定的两个 CDN&#xff0c;国内还没发现哪一家比较好&#xff0c;目前还是建议下载到本地。 Staticfile CDN&#xff08;国内&am…

【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网&#xff08;重点&#xff09; 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影…

【Linux】高级IO --- 多路转接,select,poll,epoll

所有通过捷径所获取的快乐&#xff0c;无论是金钱、性还是名望&#xff0c;最终都会给自己带来痛苦 文章目录 一、五种IO模型1.什么是高效的IO&#xff1f;&#xff08;降低等待的时间比重&#xff09;2.有哪些IO模型&#xff1f;哪些模型是高效的&#xff1f;3.五种IO模型的特…

简单理解微服务限流、降级、熔断

微服务限流、降级、熔断分别都是什么意思&#xff0c;我们平时工作中为什么要关注这些东西呢&#xff1f; 公司不断的发展壮大&#xff0c;一开始处于蛮荒时代&#xff0c;咱们从单体应用过渡到微服务的时候&#xff0c;可能还是那一套单体的思想&#xff0c;再加上用户量可能…

大模型参数高效微调技术原理综述(二)-BitFit、Prefix Tuning、Prompt Tuning

随着&#xff0c;ChatGPT 迅速爆火&#xff0c;引发了大模型的时代变革。然而对于普通大众来说&#xff0c;进行大模型的预训练或者全量微调遥不可及。由此&#xff0c;催生了各种参数高效微调技术&#xff0c;让科研人员或者普通开发者有机会尝试微调大模型。 因此&#xff0c…

2023-9-1-虚拟网卡学习

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

日常开发小点汇总(1)

1.浮动元素 生成一个浮动流&#xff0c;块级元素看不到&#xff0c;文本、行内属性元素及行内元素可见 <div class"demo1"></div><span>123</span><div class"demo2"></div>.demo1 {width: 100px;height: 100px;backg…

在 linux 虚拟机上安装配置 hive

目录 一 下载hive 安装包 二 解压 hive 并配置环境变量 三 配置hive 的配置文件 四 更新 guava 五 hive初始化 六 开启远程连接 七 使用datagrip 连接 hive 一 下载hive 安装包 百度网盘资源如下&#xff1a; 链接: https://pan.baidu.com/s/18jF-Qri0hc52_rtL61O0YQ?…

Unity中神秘的Transform和transform(小写)的关系

1.为什么Transform类是保护的不能通过new 来实例化对象,也没有静态函数,而Rotate()这种方法却属于它,该如何访问? Transform 类还是被保护的不允许用户修改! protected Transform(); 是一个受保护的构造函数,不能直接实例化 Transform 类。 2.为甚么transform可以访问Tr…

2023年行研行业研究报告

第一章 行业概述 1.1 行研行业 行业定义为同一类别的经济活动&#xff0c;这涉及生产相似产品、应用相同生产工艺或提供同类服务的集合&#xff0c;如食品饮料行业、服饰行业、机械制造行业、金融服务行业和移动互联网行业等。 为满足全球金融业的需求&#xff0c;1999年8月…

蓝桥杯备赛(Day5)——二叉树

二叉树存储 普通做法,二叉树一个节点包括结点的数值以及指向左右子节点的指针 在class Node中 def __init__(self,s,l=None,r=None):self.val=Noneself.l=lself.r=r 在竞赛中,我们往往使用静态数组实现二叉树,定义一个大小为N的静态结构体数组,使用其来存储一棵二叉树。…

使用生成式 AI 增强亚马逊云科技智能文档处理

数据分类、提取和分析对于处理大量文档的组织来说可能具有挑战性。传统的文档处理解决方案是手动的、昂贵的、容易出错的,并且难以扩展。利用 Amazon Textract 等 AI 服务,亚马逊云科技智能文档处理(IDP)允许您利用业界领先的机器学习(ML)技术来快速准确地处理任何扫描文档或图…

Android后退堆栈

修改代码 现在的ItemClick使得用户单击其中一个项目时就会跳转&#xff0c;现在要修改其使得在一个小屏幕设备上才会这样做&#xff0c;在一个大屏幕设备上运行用户选择一个训练项目时在右边的片段显示响应的信息。 希望片段处理后退的方式&#xff1a;假设用户在手机上运行这…

酷克数据与华为合作更进一步 携手推出云数仓联合解决方案

在一起&#xff0c;共迎新机遇&#xff01;8月25-26日&#xff0c;2023华为数据存储用户精英论坛在西宁召开。酷克数据作为国内云原生数据仓库的代表企业&#xff0c;也是华为重要的生态合作伙伴&#xff0c;受邀参与本次论坛&#xff0c;并展示了云数仓领域最新前沿技术以及联…