python唯一映射类型是什么_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或关键字参数,则数据项顺序将是任意的。如果接收了键-值二元组构成的元组列表时,顺序会得以保留。如果改变某个数据项的值,顺序也不会改变。

原文链接:https://blog.csdn.net/asmartkiller/article/details/108248508

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值