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

Python学习入门(13)—字典

liuian 2024-11-28 00:44 46 浏览

(本号正在连续推出以Python官网文档为主线的系统学习Python的系列文章或视频,感兴趣的朋友们欢迎搜索关注。在这里学习Python事半功倍!本文及后续文章如无特别声明均以Windows平台作为演示平台,Python版本为:3.8.1)


在Python中,映射类型用于表示可哈希的值集映射到任意对象集的映射关系,其中可哈希的值称作键,键映射到的对象称为值。映射类型是可变的,也就是可以删除特定键值之间的映射关系,也可以将特定键映射到别的对象。目前,在Python中只内置了一种映射类型:字典。除去那些不能哈希的类型的值(例如列表,字典和其他通过值而不是id比较的可变类型的值),其它值几乎都可用作字典的键。同一字典内的键是唯一的,不能重复的。用于键的数字类型遵循数字比较的一般规则:如果两个数字键比较相等(比如1和1.0),那么它们被视为同一个键。(不过请注意,由于计算机将浮点数存储为近似值,因此将它们用作字典键通常是不明智的。)

字典类型对象的构造

字典对象可以通过将逗号分隔的键值对放置到{}内或使用dict()构造。其中dict()有三种形式:

  • dict(**kwarg) 所有实参都是以关键字参数的形式传递。
  • dict(mapping, **kwarg) 接受第一个为映射类型的参数,其余(若有)都以关键字参数的形式传递。
  • dict(iterable, **kwarg) 接受一个可迭代类型的位置参数,此参数的元素必须是键值对,其余(若有)都以关键字参数的形式传递。

字典对象是按如下构造的:

  1. 如果没有提供位置参数,则构造空字典对象。
  2. 如果提供的位置参数是映射类型的,则创建包含与该参数所包含的键值对相同的字典。
  3. 如果提供的位置参数是可迭代类型的,则构造包含以该参数中每个元素的第一个对象为键第二个对象为值的键值对的字典,如果键重复出现则最后出现的键对应的值为此键的值。这种情况下要求该参数中的元素本身必须是包含两个对象的可迭代类型的对象,并且元素的第一个对象必须是可哈希的。如果不满足此要求会报TypeError。
  4. 如果提供了关键字参数,则关键字参数表示的键值对加入到新创建的字典中,如果键已存在则用现在的值更新之前的值。

字典构造示例如下:

字典类型支持的操作

  • list(d) 返回由字典d中所有键组成的列表。
  • len(d) 返回字典d中键值对的个数。
  • d[key] 返回字典d中对应于键key的值。如果键不存在则报KeyError。如果定义dict的子类时定义了一个方法__missing__(),假设dSub为该子类的对象,且key在给对象中不存在,那么dSub[key]操作就会调用__missing__(),并将键key作为参数。然后该操作返回或引发由调用__missing__ (key)返回或引发的任何内容。子类中不存在其他操作或方法调用__missing__()。如果没有定义_missing__(),则dSub[key]会引发KeyError。在子类中__missing__()必须定义为一个方法,不能是一个实例变量。[注:子类的概念将在本系列后续文章中详细介绍]
  • d[key]=value 将字典d中键对应的值设为value,如果键key存在,则用value更新对应的值,否则插入键值对(key,value)。
  • del d[key] 将字典中键key对应的键值对移除,如果不存在该键则报KeyError。
  • key in d 如果在字典中存在key则为True,否则为False。
  • key not in d 如果在字典中不存在key则为True,否则为False。等同于not key in d。
  • iter(d) 返回字典中键的一个迭代器。是iter(d.keys())的快捷方式。
  • d.clear() 清除字典中所有键值对。
  • d.copy() 返回字典d的一个浅拷贝。
  • dict.fromkeys(iterable[, value]) 用来创建包含以itervale中元素为键value为值的键值对的字典,如果未指定value则键值对的值均为None。此方法是dict的类方法。
  • d.get(key[, default]) 如果字典d包含键key,则返回键key对应的值,否则返回default,如果没有给定default则返回None。
  • d.items() 返回字典的键值对的一个新视图。
  • d.keys() 返回字典的键的一个新视图。
  • d.pop(key[, default]) 如果key在字典d中,则从d中移除key对应的键值对并返回其对应的值,否则返回default。如果字典d中不存在键key并且没有指定default,则报KeyError。
  • d.popitem() 从字典d中移除并返回一个键值对。键值对的返回顺序为后进先出,即后加入的键值对先返回。
  • reversed(d) 返回字典d的键的一个逆序迭代器。
  • d.setdefault(key[, default]) 如果键key在字典中,则返回其对应的值,否则将键值对(key,default)插入到d中并返回default的值。default缺省为None。
  • d.update([other]) 使用other中的键值对更新字典,对存在的键的值进行覆盖,键不存在时插入键值对。返回None。其中other可以是字典对象,也可以是包含键值对的可迭代对象,或是关键字形式的参数。
  • d.values() 返回字典d中值的一个新视图。字典的一个值视图和另一个值视图的相等性比较总是返回False,包括自己和自己比较。

示例如下:

字典视图对象

dict.keys()、dict.values()和dict.items()返回的对象是视图对象。它们提供了字典项(键,值,键值对)的动态视图,这意味着当字典更改时,视图也将随着更改。

字典视图对象支持如下操作:

  • len(dictview) 返回字典视图dictview中项的个数
  • iter(dictview) 返回字典视图的一个迭代器。迭代顺序按键值对插入顺序。当字典在插入或删除键值对时对视图进行迭代会报RuntimeError或不能完整迭代所有项。[注:由于迭代顺序是按键值对插入顺序,因此可使用内置函数zip()来产生键值对:pairs=zip(d.keys(),d.values())。另一种产生键值对的方法是:pairs = [(k, v) for (k, v) in d.items()]
  • x in dictview 如果x在视图dictview中则返回True,否则返回False
  • reversed(dictview) 返回字典视图的一个逆序迭代器,迭代顺序按键值对插入顺序的逆序。

字典视图对象实例如下:


[注] 键视图是类似集合的视图,因为它们项是唯一的并且是可哈希的。当字典中所有键对应的值都是可哈希的,则键值对就是唯一的,可哈希的,那么键值对视图也是类似集合的视图。由于值视图中的项通常不是唯一的,所以值视图不能视为与集合类似。对于类似集合的视图,为抽象基类collections.abc.Set定义的所有操作都是可用的(例如==,<,或^)。(抽象基类将会在本系列后续文章中介绍)

【结束】

相关推荐

安卓系统强制卸载工具(安卓 强制卸载)
  • 安卓系统强制卸载工具(安卓 强制卸载)
  • 安卓系统强制卸载工具(安卓 强制卸载)
  • 安卓系统强制卸载工具(安卓 强制卸载)
  • 安卓系统强制卸载工具(安卓 强制卸载)
ie浏览器手机版官网下载(ie游览器手机版下载)

如果您在使用IE浏览器时遇到无法下载的问题,以下是一些常见的解决办法:1.清除浏览器缓存:打开IE浏览器,依次点击工具(齿轮图标)->Internet选项->常规选项->...

office2003属于什么软件(word2003属于什么软件)

是一套Office2003专业版的精简版,包含常用的Word、Excel、PowerPoint三个应用,使用者甚多。楼主如果有需要,请上电脑在本帖下载我的附件。我见过最多的,是2013或者以上的(因为...

电脑鼠标设置在哪里调(电脑鼠标在哪里去调)

电脑点击开始,在菜单中找到“控制面板”,点击“控制面板”进入,找到“鼠标”点击进入在打开的窗口中选择“指针”,选择指针样式,可点击浏览,找到文件夹下,查看哪些指针可选择。可按路径把喜欢的图标放进去找到...

ie浏览器怎么下载到电脑桌面

工具/材料:电脑1、首先在电脑桌面里找到这台电脑,双击将它打开。2、打开之后,在里面找到吸C盘,双击将它打开。3、然后在C盘里面找到Programfiles这个文件,将此文件打开。4、打开之后,在里...

主板bios没有csm选项(主板没有csm怎么办)

对普通用户最大的区别是,符合标准的bootloader必须为UEFI保证二进制兼容。结果:32位UEFI固件只能启动32位操作系统。64位UEFI固件只能启动64位操作系统。由于历史因素、OEM政策,...

电脑中病毒了怎么解决(电脑中病毒了怎么解决方法)

电脑因为中毒而不能上网,解决办法如下:1、首先第一步就是杀毒,对一个菜鸟而言只能用杀毒软件来杀毒了,当然,因为病毒更新往往快于杀毒软件的更新速度,所以杀毒有时候是解决不了问题的额,也就是说很多毒是杀...

win10连接网络打印机(win10连接网络打印机成功后不打印)
  • win10连接网络打印机(win10连接网络打印机成功后不打印)
  • win10连接网络打印机(win10连接网络打印机成功后不打印)
  • win10连接网络打印机(win10连接网络打印机成功后不打印)
  • win10连接网络打印机(win10连接网络打印机成功后不打印)
电脑主机启动一下又灭一直反复

故障分析:电脑开机转一下就停然后再转这是由于电脑硬件接触不良,主板或后续硬件短路,电源故障等造成的。1、内存松了或者金手指氧化这种可能性最大,很多用户都是这种方法解决的。首先我们将内存取下,取下也十分...

如何设开机密码 电脑(如何设置开机电脑密码)

方法如下1.建立开机密码。进入BIOS系统界面,点击键盘的Del按键,点击选项中的设置用户密码。设置完毕进入高级设置,点击密码选项列表的系统密码,点击保存并推出即可;2.设置系统密码。进入系统界...

lenovo联想官方商城(联想电脑官方网站商城)

www.lenovo.com.cn联想集团(下称联想)是一家成立于中国、业务遍及180个市场的全球化科技公司。联想聚焦全球化发展,树立了行业领先的多元企业文化和运营模式典范,服务全球超过10亿用户。作...

我的世界国际版官网(我的世界国际版如何下载)

官网入口:https://www.lezhin.com/这是一款很多用户都在使用的观看各种漫画内容的软件,用户在使用的过程中能够快速了解到各种自己感兴趣的漫画。1可以通过搜索引擎找到植物大战僵尸2国...

我要qq号码免费申请(qq号申请免费申请号码官网)

你可以到腾讯官方网站,去免费注册一个QQ,可以不交费的,是有免费的账号和密码。操作方法:1.打开手机qq,用手指轻点qq图标即可。进入qq后,会进入登录或注册新用户页面。点击新用户,进入注册页面2....

新冠疫苗接种查询(新冠疫苗接种查询不到了)

银川市疫苗接种信息在“我的宁夏”app里查询。打开“我的宁夏”app,打开“健康码”选项,然后打开“疫苗接种查询”,就可以查询到你的疫苗接种信息了。如果你接种了吗两次疫苗,你的健康码就会镶嵌了金边,只...

cdr格式文件怎么打开(cdr格式用什么可以打开)

cdr是什么文件?cdr文件用什么打开?cdr文件是CorelDraw图像制作软件标准的输出格式,与photoshop(PS)图片设计软件类似都属于图片设计软件,需要打开cdr文件我们就需要先了解C...