百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

python教程从基础到精通,第7课—Dictionary(字典)

liuian 2024-11-28 00:43 47 浏览

Hello,小伙伴们,预祝大家五.一快乐!

前面咱们已学习了七大数据类型的Number(数字)、Boolean(布尔类型)、String(字符串),List(列表),Tuple(元组)。今天咱们来研究进一步学习Dictionary(字典)、Set(集合)

1、Dictionary(字典)的定义

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

dic = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。字典中的元素(key: value对)默认情况下会根据key的ASCII码自动排序,也就是说key改变了,那么这对值在字典中的位置可能就会跟着发生变化。

一个简单的字典示例:

示例代码:

dic1= {} #创建一个空字典
dic2= dict() #创建一个空字典
dic3= {'k1':1,'k2':2,'k3':3,1:'ab',2:'cd',3:'ef'} #key必须为数字或字符串,值可以为任意对象
dic4= dict(one=1,two=2,three=3)
dic5=
dict(zip(('one','two','three'),(1,2,3)))
dic6=
dict((('one', 1), ('two', 2), ('three', 3)))
dic7=
dict({('one', 1), ('two', 2), ('three', 3)})
print(dic1,dic2) # {} {}
print(dic3) # {'k1': 1, 'k2': 2, 'k3': 3, 1: 'ab', 2: 'cd', 3: 'ef'}
print(dic4) # {'one': 1, 'two': 2, 'three': 3}
print(dic5) # {'one': 1, 'two': 2, 'three': 3}
print(dic6) # {'one': 1, 'two': 2, 'three': 3}
print(dic7) # {'one': 1, 'two': 2, 'three': 3}


由于字典的元素是一对key与value,所以没办法像列表与元组一样直接用list(ojb)、turple(ojb)强制,而是要借助dict.fromkeys(ojb)方法,代码如下:

dic1 = ('key1', 'key2', 'key3') # ['key1', 'key2', 'key3']亦可

print(dict.fromkeys(dic1)) # {'key1': None, 'key2': None, 'key3': None}
dic2 = dict.fromkeys(dic1, 'new') # 将元组或列表转成字典的键,其值全为'new'
print(dic2) # {'key1': 'new', 'key2': 'new', 'key3': 'new'}

2、Dictionary(字典)的访问

字典可以通过key访问到相应的值,还存在items类、get、setdefault等方法访问方式,可以提取所有的键,亦可提取所有的值。

直接上代码:

dica = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(dica)
print(type(dica.items())) #<class 'dict_items'>
print(tuple(dica.items())) #(('Name', 'Runoob'), ('Age', 7), ('Class', 'First'))
print("dict['Name']:",dica['Name']) #通过key访问值
print("dict['Age']:",dica['Age']) #通过key访问值
for i in dica.keys(): print(i,end=',') #Name,Age,Class,
print()
for i in dica.values(): print(i,end=',') #Runoob,7,First,
print()
for i in dica: print(f'{i}:',dica[i]) #迭代方法,打印整个字典
for i,j in dica.items(): print(f'{i}:',j) #迭代方法,打印整个字典
print(dica.get('age','没有')) #返回key为age的值,没有找到就返回'没有'
print(dica.setdefault('age','没有')) #返回key为age的值,没有找到就返回'没有',但会新建age键,值为’没有‘
print(dica) # {'Name': 'Runoob', 'Age': 7, 'Class': 'First', 'age': '没有'}

3、Dictionary(字典)的操作

1) 改变元素的value

示例代码:

dica = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dica[
'Age'] = 8
print(dica) # {'Name': 'Runoob', 'Age': 8, 'Class': 'First'}


2) 改变元素的key,巧用pop(key)方法

示例代码:

dica = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dica[
'NianL'] = dica.pop('Age') #key的替换,用'NianL'代替'Age'
print(dica) # {'Name': 'Runoob', 'Class': 'First', 'NianL': 7}
if 'Age' in dica:
print("这个元素存在")
else:
print("这个元素不存在")

3) 更新字典update()方法

示例代码:

dic1={'name':'Jake','year':1998}
dic2={
'rank':6, 'year':2018}
dic1.update(dic2)
#合并两个字典,key相同的值更新不进去
print(dic1) #{'name': 'Jake', 'year': 2018, 'rank': 6}


4) 删除字典元素pop()、popitem()、del()

示例代码:

dica = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del dica['Class'] # 删除key为'Class'的元素
print(dica) # {'Name': 'Runoob', 'Age': 7}
del dica['Age'] # 删除key为'Age'的元素
print(dica) # {'Name': 'Runoob'}

dica = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(dica.popitem()) #随机删除某键值对,并以元组的形式返回这个键值对,('Class', 'First')
print(dica) #{'Name': 'Runoob', 'Class': 'First'}

del dica # 删除整个字典,后面不可再访问

5) 字典增加元素append()方法

示例代码:

dicta= dict.fromkeys(['k1','k2'],[1]) #将元组或列表转成字典的键,其值全为第二部分
print(dicta) #{'k1': [1], 'k2': [1]}
dicta['k2'].append(666) #因为append是列表的方法,不适用于元组与字典,将字典中的所有值都拓展一个[666]print(dicta) #{'k1': [1, 666], 'k2': [1, 666]}
dicta['k1'] = 777 #修改'k1'的值为777
print(dicta) #{'k1': 777, 'k2': [1, 666]}

6) 字典的浅拷贝与深拷贝

浅拷贝(dict.copy()):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(copy.deepcopy()): 它是copy模块的deepcopy方法,完全拷贝了父对象及其子对象。

dic1 = {'name': 'geek', 'car': [1, 2, 3]}
dic2 = dic1.copy()
print(dic1) #{'name': 'geek', 'car': [1, 2, 3]}
print(dic2) #{'name': 'geek', 'car': [1, 2, 3]}
dic1['car'].append(4)
print(dic1) #{'name': 'geek', 'car': [1, 2, 3, 4]}
print(dic2) #{'name': 'geek', 'car': [1, 2, 3, 4]}


我们再看看深拷贝,需要导入copy模块:

import copy
dic1={
'name':'geek', 'car':[1,2,3]}
dic3=copy.deepcopy(dic1)
print(dic1) #{'name': 'geek', 'car': [1, 2, 3]}
print(dic3) #{'name': 'geek', 'car': [1, 2, 3]}
dic1['car'].append(4)
print(dic1) #{'name': 'geek', 'car': [1, 2, 3, 4]}
print(dic3) #{'name': 'geek', 'car': [1, 2, 3]}

4、字典的内置函数

Python字典包含了以下内置函数:

5、字典的内置方法

Python字典包含了以下内置方法:

愉快学习的时光总是过得很快,一不小心又到结尾啦。

先来给自己一个奖励,双手举起,yeah!

有什么问题可以关注我/私信我/加好友,让我们一起成长吧。

相关推荐

笔记本可以外接显卡吗(笔记本电脑核显和独显的区别)

目前市面上有许多笔记本电脑支持外接显卡,这些笔记本通常具备Thunderbolt3或USB-C接口,这些接口可以通过外接显卡扩展图形性能。例如,戴尔XPS系列、华硕ROG系列、雷蛇Blade系列等都...

深度启动盘(深度启动盘安装系统教程)

要制作深度系统的启动盘,需要首先下载深度系统的镜像文件,然后选择一个合适的软件进行制作。推荐使用Rufus或Etcher等工具,将镜像文件写入U盘或光盘中,并设置好启动顺序。接着将制作好的启动盘插入电...

免费看电影的网站是什么(免费的看电影网站有哪些)

优选优酷,不过现在的乐视好的,片源十分高清,如果网速一般就选优酷,播放流畅,片源最多。我个人比较喜欢看电影电视,所以市面上有的播放器都有在用,有一定的经验。如果是下播放器的话,一般网速人又懒就选PP...

有wifi电脑却上不了网(有wifi但是电脑连不上网是什么原因经常性的)

有几个可能的原因导致电脑无法通过WiFi上网。首先,可能是WiFi信号不稳定或弱,可以尝试靠近路由器或重启路由器来改善信号。其次,可能是电脑的网络设置有问题,可以检查IP地址、DNS设置等是否正确。另...

电脑截图快捷键怎么改(电脑截图快捷键怎么改大小)
  • 电脑截图快捷键怎么改(电脑截图快捷键怎么改大小)
  • 电脑截图快捷键怎么改(电脑截图快捷键怎么改大小)
  • 电脑截图快捷键怎么改(电脑截图快捷键怎么改大小)
  • 电脑截图快捷键怎么改(电脑截图快捷键怎么改大小)
快用苹果助手官方网站(快用苹果助手官方网址)

PP助手、爱思助手、当乐助手、海马苹果助手、91苹果助手、同步推手机助手、快用苹果助手、等等都是不错的第三方助手!第三方应用助手是一款智能手机的PC端管理客户端。将应用助手安装到您的PC上,然后可以选...

win7重置系统后需要用户名和密码

如果忘了WINDOS开机密码,有两种最常用的方法:第一种:开机后,按下F8进入”带命令提示符的安全”模式,输入”NETUSER+用户名+123456/ADD”可把某用户的密码强行设置为”12345...

qq下载2025手机版(qq下载2020手机版)

目前来看的话java版的QQ还是可以用的。.我们需要用那种比较老式的塞班系统手机才能下载安装使用,就目前的时代使用它的意义就看我们自己怎么理解了,不过社会在进步,科技也在发展,要想更强时代的潮流,万物...

nod32(NOD32手机版)

nod32是斯洛伐克共和国,简称斯洛伐克,是中欧的一个内陆国家。打开nod32,在主窗口右上角有一个设置按钮,单击它就会出现一个下拉菜单,再点击用户名和密码设置即可出现你第一次申请时的用户名和密码1...

分盘c盘分多大合适(分区c盘一般多大)

如果硬盘大,有一千个G,可以把硬盘分成4个盘,c盘,D盘,E盘,F盘,C盘大点,分300个G,D盘,E盘,F盘各分230个G,因为很多操作系统都在c盘,c盘有足够的空间,电脑反应才快。100G。按照安...

绘图显卡天梯图(绘图显卡性能排行)

NVIDIA是Quadro系列和ATI是FireGL系列都属于专业绘图显卡。这里分别介绍下其中一款产品的参数:NvidiaQuadro4000参数:显存类型:GDDR5;显存容量:2048M...

哪个网站的win7系统好用(哪个网站的win7系统好用一点)

靠谱,系统之家的系统装好后不需要激活,也不要钱。只是系统之家的所有东西,系统也好,软件也好。都有强有力的写在系统底层的顽固病毒,只要碰过系统之家就永远杀不干净。当然了,永远关不掉的广告弹窗也是基本操作...

升级win10的最低配置(电脑升级win10的最低配置)

1最低配置是1GHz的处理器、1GB的内存和16GB的硬盘空间2因为升级操作需要一定的计算机资源,若电脑配置过低,升级可能会出现卡顿、崩溃等问题。因此微软推荐至少1GHz的处理器、1GB的内存和1...

qq人工客服入口(qq人工客服详细联系方法)
  • qq人工客服入口(qq人工客服详细联系方法)
  • qq人工客服入口(qq人工客服详细联系方法)
  • qq人工客服入口(qq人工客服详细联系方法)
  • qq人工客服入口(qq人工客服详细联系方法)
手机上怎样鉴定u盘容量(手机上怎样鉴定u盘容量呢)

手机想要检测u盘的真实内存,可以首先在手机上下载一个u盘管理软件。下载完毕之后,就利用转换器连接u盘在手机的充电口。手机读取之后就可以出现现有的内存,将它导入u盘管理软件。就可以读取深层次的真实内存。...