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

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

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

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!

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

相关推荐

不用电脑怎么恢复(不用电脑怎么恢复出厂设置)

操作方法01方法一:通过设置重置电脑使用快捷键Windows+A,点击所有设置,点击更新系统-恢复,重置此电脑点开始。02选择仅保留我的文件,删除应用和设置,提示窗口会显示出将被删除的应用,点击下一步...

最强视频播放器(2020视频播放器排行榜前十名)

应该是MXPlayer。他是一款安卓版上十分强悍的视频播放器,他以解码性能强、兼容性高而闻名,并且,对视频字幕的支持更是堪称一绝,支持在线匹配,对特效字幕的支持也是非常的高的。作为一款优质的手机视频播...

三星固态驱动官网(三星固态官方软件)

三星手机序列号查询官网是http://www.samsung110.com/。手机序列号(S/N号)查询方法:设置-关于手机-状态-序列号(序号)。或通过以下方式查询:通过机器包装盒上的标贴查询用...

雨林木风u盘装机教程(雨林木风u盘装系统,步骤)

电脑系统安装步骤:1、用【u启动u盘启动盘制作工具】制作u启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到u启动主菜单,选取“【02】Win8PE装机维护版(新机器)”选项2、进...

无法连接到这个网络是怎么回事

有可能是网络本身有问题,需要联系运营商解决。也有可能是因为网卡驱动问题,首先鼠标右击开始按钮,然后点击设备管理器,双击网络适配器,最后查看网卡驱动有没有出现黄色的感叹号,如果有的话,右击选择更新驱动程...

刷机精灵怎么解除锁屏密码(刷机精灵怎么解除锁屏密码设置)

刷机精灵解锁手机锁屏密码方法:下载好刷机精灵。打开链接手机,之后在刷机精灵页面里能看到“实用工具”的选项。解除手机解锁图案要获取root权限,若没有获取的可以在这里点击获取root权限的选项。获取了...

联想云服务官网(联想云服务官网查找手机)

华为手机也是可以下载云服务软件安装然后使用联想账号登陆云服务的。部分云服务功能将无法使用。登录联想云服务方法:点开云服务软件,选择立即使用,即出现:手机号码登入,邮箱登入,第三方登入;手机号码登入,邮...

宏基笔记本系统重装快捷键(宏基笔记本重装系统步骤)

如果用系统u盘、光盘安装:1、需要在Bios中设置从u盘或光盘启动。2、启动电脑,dcer一般默认按Del键(有些型号F2、F12)进入Bios设置界面。F2键。宏碁笔记本重装系统按F2键,进入BIO...

windows10官网打不开(win10系统官网打不开)

你可以通过以下步骤在Windows10官网上更新操作系统:1.打开windows官网,进入“下载和工具”页面。2.单击“立即下载工具”按钮,将下载“Windows10更新助手”。3.运行“...

win7无线网卡插上没反应(win7无线网卡插上没反应怎么回事)

1、如果是路由器的问题,如果原来可以用,暂时不能用了,在有就是恢复出厂设置,从新设置就可以用了(这是在物理连接正确的前提下)。2、如果是宽带本身的问题,首先直接联接宽带网线测试,如果是宽带的问题,联系...

下载爱奇艺安装(下载爱奇艺安装包)

如果你的电脑无法安装爱奇艺,可能有以下原因,第一种原因可能是你的电脑系统版本太低,升级你的电脑操作系统,可以促进爱奇艺的下载,第二种情况是你下载的爱奇艺可能捆绑一些病毒软件,系统的杀毒软件识别有霸王软...

5000元左右的电脑配置单(5000左右的电脑配置推荐2021)

五千元至六千元价位电脑主机,如果组装机,可以配置配置很高的档次,电脑主机主板可以配置不低于十二代产品,可以设四个内存条插槽,相应的内存可以配置128GB内存条2至四根,电脑处理器也同样不低于十二代产品...

快速关机(快速关机按什么键)
快速关机(快速关机按什么键)

1、我们直接长按手机右侧的电源键,大概5秒的时间,这时候手机页面会直接显示是否关机,选择关机就可以直接关机了。2、找到手机一侧的音量“+”键,再找到电源按键,之后只需同时按住音量“+”键和电源按钮,直到手机屏幕关闭即可强制关机。3、点击【设...

2025-12-25 08:05 liuian

云电脑免登录破解版(“云电脑破解版”)

虎牙YOWA云游戏平台便是一款完全免费的产品,只要玩家在自己的账号上购买过相关的产品即可通过云游戏平台直接登陆。但云游戏平台终归只是改变玩家的游戏方式,用户最终还是要回归于游戏中,如果难以保证游戏体验...

联想家庭版win7(联想家庭版笔记本电脑)

1、开机到欢迎界面时,按Ctrl+Alt+Delete,跳出帐号窗口,输入用户名:administrator,回车。2、如果这个帐号也有密码采用开机启动时按F8选“带命令行的安全模式”。3、选“Ad...