Python3入门之——映射类型

映射是键值数据项的组合,并提供了存取数据项及其键、值的方法。进行迭代时,映射类型以任意顺序提供其数据项。Python 3.0支持两种无序的映射类型——内置dict类型以及标准库中的collections.defaultdict类型。Python 3.1中引入了一种新的、有序的映射类型collections.OrderedDict,该类型是一个字典,与内置的dict具有相同的方法和属性,但在存储数据项时以插入顺序进行。
只有可哈希运算的对象可用作字典的键,因此,固定的数据类型(比如dict、list与set)都可以用作字典的键,可变的数据类型(比如dict、list与set)则不能。每个键项关联的值实际上是对象引用,可以引用任意类型的对象,包括数字、字符串、列表、集合、字典、函数等。
字典类型可以使用标准的比较操作符(<、<=、==、!=、>=、>)进行比较,这种比较实际是逐项进行的(对嵌套项,比如字典内的元组或字典,递归进行处理)。可以认为,对字典而言,唯一有意义的比较操作是==与!=。

字典 {}

dict是一种无序的组合数据类型,其中包含0个或多个键值对。其中,键是指向可哈希运算的对象的引用,值是可以执行任意类型对象的引用。字典是可变且无序的,不能进行分片或按步距分片。dict数据类型可以作为函数调用:dict()。不带参数调用该函数时,将返回一个空字典;带一个映射类型参数时,将返回以该参数为基础的字典。比如,该参数本身为字典,则返回该参数的浅拷贝。使用序列型参数也是可能的,前提是序列中的每个数据项本身是一个包含两个对象的序列,其中第一个用作键,第二个用作值。字典可以使用花括号创建,空花括号会创建空字典,非空的花括号必须包含一个或多个逗号分隔的项,其中每一项都包含一个键、一个字面意义的冒号以及一个值。另一种创建字典的方式是使用字典内涵。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方括号可以用于添加或删除字典项,要添加一个项,可以使用操作符=,比如d[“X”]=59;要删除一个项,可以使用del语句,比如,del d[“mars”]将从字典中删除键为mars的项,或产生一个KeyError异常。字典支持内置的len函数,也可以使用in与not in对其键进行快速的成员关系测试。
在这里插入图片描述
由于字典既包含键,又包含值,因此可以根据(key, value)项、根据键或根据值对其进行迭代。比如,这里给出两个根据(key,value)对进行迭代的等价方法:
在这里插入图片描述
根据字典的值进行迭代:
在这里插入图片描述
根据字典的键进行迭代:
在这里插入图片描述
dict.items、dict.keys以及dict.values等方法都会返回字典视图。在实际作用上字典视图是一个只读的iterable对象,看起来存放了字典的项、键或值。视图与通常的iterables有两个不同点:第一,如果该视图引用的字典发生变化,那么视图将反映该变化;第二,键视图与项视图支持一些类似于集合的操作。给定字典视图v与set(或字典视图)x,支持的操作包括:
在这里插入图片描述
在这里插入图片描述

字典内涵

字典内涵是一个表达式,同时是一个循环,该循环带有一个可选的条件(包含在方括号中),支持两种语法格式:
在这里插入图片描述
举例:使用字典内涵创建字典,键是当前目录中文件的文件名,值为字节计数的文件大小
在这里插入图片描述
避免返回目录以及其他非文件的条目:
在这里插入图片描述
与列表内涵和集合内涵一样,字典内涵中的Iterable也可以是一个内涵,因此,所有各种嵌套的内核都是可能的。

默认字典

默认字典是字典的子类,这种字典包含字典所能提供的所有操作符与方法。默认字典的不同之处在于可以对遗失的键进行处理。在存取一个字典时,如果使用一个不存在(遗失的)的键,就会产生一个KeyError异常。如果希望使用的每个键都在字典中,比如,默认字典d其中不包含键为m的项,那么就会创建一个新项(键为m,值为默认值),并返回新创建项的值,而不是产生KeyError异常。
words = collections.defaultdict(int) 如果使用x = words[“xyz”],实际上不存在键为xyz的项,进行这样的存取操作时,由于没有找到该键,因此,默认字典会立即创建一个新项,其键为xyz,其值为0(通过调用int())。

有序字典

有序字典collections.OrderedDict是在Python 3.1中引入的,有序字典以数据项插入的顺序进行存储。有序字典在创建时如果接收了无序的dict或关键字参数,则数据项顺序将是任意的。如果接收了键-值二元组构成的元组列表时,顺序会得以保留。如果改变某个数据项的值,顺序也不会改变。
在这里插入图片描述

Python的OpenGL库是一个用于渲染图形和实现3D图形应用的强大工具。如果你是一个初学者,以下是一些学习OpenGL的指南: 1. 学习基本的计算机图形学概念:在深入学习OpenGL之前,了解一些基本的计算机图形学概念是很重要的。你可以学习像坐标系、向量、矩阵变换等基础知识。 2. 学习Python语言基础:作为一个初学者,你需要先掌握Python的基本语法和编程概念。这将帮助你更好地理解和使用OpenGL库。 3. 安装OpenGL库:在开始之前,你需要确保你的计算机上已经安装了OpenGL库。你可以使用pip来安装PyOpenGL库。 4. 学习OpenGL的核心知识:一旦你准备好了,可以开始学习OpenGL的核心知识,如顶点缓冲对象(VBO)、着色器(programs)、着色器语言(GLSL)等。掌握这些基本概念对于理解和使用OpenGL非常重要。 5. 编写简单的OpenGL程序:接下来,你可以开始编写一些简单的OpenGL程序来实践所学的知识。你可以从简单的绘制一些基本图形开始,然后逐渐扩展到更复杂的场景和效果。 6. 学习OpenGL的高级特性:一旦你熟悉了OpenGL的基本知识,你可以探索一些更高级的主题,如光照、纹理映射、深度测试、投影等。这将帮助你创建更逼真和交互式的3D图形应用。 7. 参考文档和教程:除了上述的自学方法外,你还可以参考一些优秀的OpenGL文档和教程。一些推荐的资源包括OpenGL官方文档、PyOpenGL官方文档、学习OpenGL的在线教程等。 记住,学习OpenGL需要时间和实践。通过不断地编写代码和实验,你将逐渐掌握OpenGL的技能并创建出令人惊叹的图形应用。祝你好运!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值