Python---字典相关知识
创始人
2024-05-15 21:56:07
0

专栏:python
个人主页:HaiFan.
专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。

字典

  • 思维导图
  • 字典是什么
  • 创建字典
  • 查找键key
  • 字典的新增和修改元素
  • 删除元素
  • 遍历字典元素
  • 合法的key类型
  • 总结


思维导图

在这里插入图片描述


字典是什么

字典是一种存储键值对的结构。
什么是键值对呢?这是计算机中一个广泛使用的概念。
键key和值value进行一个一一对应的映射,然后就可以根据键快速找到值。

比如:学校的学生,每个学生都有一个唯一的学号,知道了学号,就可以通过学号找到这个同学,这里的学号就是键,同学就是值。

创建字典

创建一个字典有两种方式,一个是使用{}创建,还有一种是通过dict关键字来创建。

a = {}
print(type(a))
b = dict()
print(type(b))

在这里插入图片描述


也可以在创建的同时进行初始化。
键值对之间的使用,分割键和值之间使用:分割
使用print来输出字典的内容

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu)

在这里插入图片描述

注:在创建字典并进行初始化的时候,如果有多个键值对,可以将其分开写,这样显得更加美观。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}

最后一个键值对,后面可以写也可以不写。

查找键key

在列表中,使用in可以判断某一元素是否在该列表中存在。
在这里,使用in也可以判定key是否在字典中存在,返回值是布尔值。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print('name' in stu)
print('haha' in stu)
print(100 in stu)

在这里插入图片描述

注:in只是判定key是否存在,与value无关。


使用[]通过类似于取下标的方式,获取到元素的值,只不过,此处的下标是key,(key的数据类型可能是任意类型),通过访问key可以找到value

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu['name'])

在这里插入图片描述


如果key在字典中不存在,则会抛出异常

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu[100])

在这里插入图片描述

对于字典来说使用in或者[]来获取value都是高效的操作。
在列表中,使用in是低效的,使用[]是高效的。

字典背后使用的是特殊的数据结构:哈希表

字典的新增和修改元素

使用[]可以根据key来新增/修改value。
如果key不存在,对取下标操作赋值,即为新增键值对。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}
print(f'没有新增前{stu}')
stu['age'] = 10print(f'新增后{stu}')

在这里插入图片描述


如果key已经存在,对取下标操作赋值,是修改键值对的值。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}
print(f'修改前{stu}')
stu['gread'] = 200
print(f'修改后{stu}')

在这里插入图片描述

删除元素

列表可以使用pop()进行尾删,在pop()这个括号里面添加数字,是按照下标删除元素。
在字典中,使用pop方法,根据key来删除键值对。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}
print(f'删除前{stu}')
stu.pop('gread')
print(f'删除后{stu}')

在这里插入图片描述

注:不能直接使用pop进行尾删,否则后抛出异常

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}
stu.pop()#括号里要带上key

在这里插入图片描述

遍历字典元素

遍历是把一个可迭代对象里面的元素依次取出来。
列表可以遍历,字典也可以遍历。

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}for key in stu:print(key,stu[key])

在这里插入图片描述


取出所有key和value

使用keys方法可以获取到字典中的所有的key

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu.keys())

在这里插入图片描述

注:这里的dict_keys是一个特殊的类型,专门用来表示字典中所有的key,大部分元组支持的操作对于dict_keys同样适用。


使用values方法可以获取到字典中的所有value

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu.values())

在这里插入图片描述

注:这里的dict_values也是一个特殊的类型,和dict_keys类似


使用items方法可以获取到字典中的所有键值对

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}print(stu.items())

在这里插入图片描述

stu = {'name' : 'zhangsan','stu id': 123456,'gread': 100}for k,v in stu.items():print(k,v)

在这里插入图片描述

合法的key类型

不是所有的类型都可以作为字典的key
字典的本质是一个哈希表(哈希表是数据结构里的内存,想了解的话,可以了解一下,哈希表也叫做散列表,根据关键字和值直接进行访问的数据结构,通过把关键字key映射到表中的一个位置)
哈希表的key要求是可哈希的,也就是可以计算出一个哈希值。

可以使用hash函数计算出某个对象的哈希值

print(hash(1))
print(hash(0))
print(hash(0.001))
print(hash("新年快乐"))

在这里插入图片描述


列表无法计算哈希值

alist = [1,2,3]
print(hash(alist))

在这里插入图片描述

unhashable就是不可哈希的意思


字典也无法计算哈希值

adict = {1:2}
print(hash(adict))

在这里插入图片描述


不可变的对象一般是可哈希的
可变的对象一般书不可哈希的

总结

字典也是一个常用的结构,字典的操作都是以key为中心展开的,需要用到键值对映射的场景,就可以考虑使用字典。

相关内容

热门资讯

怎么解除订阅安卓系统,安卓系统... 你是不是也和我一样,手机里订阅了好多服务,结果现在想解除订阅,却一头雾水?别急,今天就来手把手教你如...
安卓系统停用怎么开启,轻松恢复... 亲爱的手机控们,你是否曾经遇到过安卓系统突然停用的情况,让你手忙脚乱,不知所措?别担心,今天就来教你...
安卓系统电池健康度,电池健康度... 你有没有发现,你的安卓手机最近是不是有点儿不给力了?电池续航能力大不如前,充电速度也慢了不少?别急,...
安卓系统按键怎么截图,安卓系统... 你是不是也和我一样,有时候想截个图分享给朋友,却发现安卓手机的截图功能有点神秘呢?别急,今天就来手把...
购票系统安卓源代码,架构设计与... 你有没有想过,那些我们每天离不开的购票系统,它们背后的秘密是什么呢?今天,就让我带你一探究竟,揭开购...
安卓手机系统后台测试,深度解析... 你有没有发现,你的安卓手机后台总是悄悄地忙碌着?别小看了这些后台程序,它们可是手机系统稳定运行的关键...
安卓系统重启的图标,解锁设备新... 手机突然重启,是不是心里有点慌?别急,今天就来和你聊聊安卓系统重启的图标,让你一眼就能认出它,再也不...
车载智慧屏安卓系统,智能出行新... 你有没有发现,现在的车载智慧屏越来越智能了?尤其是那些搭载了安卓系统的,简直就像是个移动的小电脑,不...
安卓系统连上网权限,解锁设备无... 你有没有发现,你的安卓手机里有些应用总是偷偷连上网?别小看这个小小的网络权限,它可是能影响你隐私、消...
安卓谷歌操作系统,探索安卓谷歌... 你知道吗?在智能手机的世界里,有一个操作系统可是无人不知、无人不晓,那就是安卓谷歌操作系统。它就像一...
安卓系统手写%怎样调出,具体实... 你有没有遇到过这种情况:在使用安卓手机的时候,突然想用手写输入法来记录一些灵感或者重要信息,可是怎么...
安卓手机重置 系统设置,轻松恢... 手机用久了是不是感觉卡顿得厉害?别急,今天就来教你怎么给安卓手机来个大变身——重置系统设置!想象你的...
win如何安装安卓系统,Win... 哇,你有没有想过,让你的Win系统也能玩转安卓应用?没错,就是那种在手机上轻松自如的安卓系统,现在也...
苹果qq和安卓系统,跨平台体验... 你有没有发现,现在手机市场上,苹果和安卓的较量可是越来越激烈了呢!咱们就来聊聊这个话题,看看苹果QQ...
显示最好的安卓系统,探索最新旗... 你有没有想过,为什么安卓系统那么受欢迎呢?它就像一个魔法盒子,里面装满了各种神奇的魔法。今天,就让我...
安卓app怎么降级系统,系统版... 你有没有发现,有时候安卓手机的系统更新后,新功能虽然炫酷,但老系统用起来更顺手呢?别急,今天就来教你...
雷军脱离安卓系统,引领科技变革... 你知道吗?最近科技圈可是炸开了锅,因为我们的雷军大大竟然宣布要脱离安卓系统,这可真是让人大跌眼镜啊!...
安卓系统自动开网络,安卓系统自... 你有没有发现,手机里的安卓系统有时候会自动开启网络连接,这可真是让人又爱又恨啊!有时候,你正专心致志...
安卓系统怎样控制后台,因为服务... 手机里的安卓系统是不是感觉越来越卡了?后台程序太多,不仅耗电还影响性能。别急,今天就来教你怎么巧妙地...
安卓系统打游戏推荐,一触即达! 你有没有发现,现在手机游戏越来越好玩了?不管是休闲小游戏还是大型MMORPG,都能在手机上畅玩。但是...