Python字典_一种映射

字典是一种映射

字典就像是一个列表一样,但更加泛化了,是列表概念的推广。在列表里面,索引必须是整数;而在字典里面,你可以用几乎任何类型来做索引了。

从字符串string,到列表 list,再到字典 dictionary,Python的变量类型就是一种泛化的过程,内容在逐步推广,适用范围更大了。

字典包括一系列的索引,不过就已经不叫索引了,而是叫键,然后还对应着一个个值,就叫键值。每个键对应着各自的一个单独的键值,这种键和键值的对应关系也叫键值对,有时候也叫项。

用数学语言来说,一个字典就代表了从键到键值的一种映射关系,所以你也可以说每个键映射到一个键值。

dict这个函数创建一个没有项目的空字典。因为dict已经是内置函数的名字了,所以你应该避免用来做变量名:

>>> test = dict()

>>> test

{}

大括号,也叫花括号,就是{},代表了一个空字典。要在字典里面加项,可以使用方括号:

>>> test['fruit'] = 'apple'

这一行代码建立了一个项,这个项映射了键 'fruit' 到键值 'apple'。如果我们再来打印输出一下这个字典,就会看到里面有这样一个键值对了,键值对中间用冒号隔开了:

>>> test['fruit'] = 'apple'

>>> test

{'fruit': 'apple'}

这种输出的格式也可以用来输入。比如你可以这样建立一个有三个项的字典:

>>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

>>> test

{'one': 'jim', 'two': 'lucy', 'three': 'tom'}

有时候,你会发现字典中的项的顺序是不确定的。

其实这不要紧,因为字典里面的元素并不是用整数索引来排列的。我们可以直接用键来查找对应的键值:

>>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

>>> test['one']

'jim'

>>> test['two']

'lucy'

>>> test['three']

'tom'

如果在字典中没有你指定的键,会提示键值错误:

>>> test['four']

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 'four'

len 函数也可以用在字典上,它会返回键值对的数目:

>>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

len(test)

3

in 运算符也适用于字典;你可以用它来判断某个键是不是存在于字典中(注意,是判断键,不能判断键值)。

>>> 'one' in test

True

>>> 'jim' in test       #注意,是判断键,而不能判断键值

False

要判断键值是否在字典中,你就要用到 values 方法,这个方法会把键值返回,然后用 in 判断就可以了:

>>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

>>> vals = test.values()

>>> 'jim' in vals

True

in 运算符在字典中和列表中有不同的算法。

对列表来说,它就按照列表顺序搜索列表中的每一个元素。随着列表越来越长了,这种搜索就消耗更多的时间,才能找到正确的位置。

而对字典来说,Python 使用了哈希表的算法,哈希表一种很厉害的特性:in运算符被使用于字典的时候,无论字典规模多大,无论里面的项有多少个,花费的时间都是基本一样的。

结束。

原文地址:https://www.cnblogs.com/liusingbon/p/13189530.html