字典

前面已经接触过列表,元组,那这一章来说说字典。列表是用方括号括起来的,是可变的,元祖的是用小括号括起来的,是不可变的列表。而且在列表里边的很多方法,在元祖里边,也可以使用。那字典是什么样呢?字典和列表、元组有什么区别?字典的表示方法是什么呢,这一章节将详细讲解。

基本定义

字典:都是为了通过轻松查找某个特定的词语(键),从而找到它的定义 (值)。如下情况,字典比列表更加适用:

  • 标示一个游戏棋盘的状态,每键都是由坐标值组成的元组;
  • 存储文件修改时间,用名作为键; 储文件修改时间,用名作为键;
  • 数字电话 /地址簿

字典是由多个键 及与其对应的值构成字典是由多个键-值(项)对组成。

注意:字典中键是唯一的,值可以不。 意:字典中键是唯一的,值可以不。

如下使用示例:

phonebook = {"Alice" : "1234" , "bob" : "3456" }
print(phonebook["bob"])
结果
3456

其中,phonebook就是一个字典结构,里面存储了两个键值对。通过phonebook[“bob”]访问键bob的值,打印的结果为3456,说明了键值对的一一对应关系。

dict函数

dict是Python保留的关键字方法,用于将元组、列表转换为字典格式。例如下面的代码:

items = [( "name" , "Leo" ), ("age" , 42 )] 
d = dict (items) # 将键值对元组转换为字典
print (d) 
d[ "name" ] = "Tom"
d[ "school" ] = "Hebei" 
print (d[ "school" ]) 
print (d)
结果:
{'name': 'Leo', age': 42} 
Hebei
{'school': 'Hebei', name': Tom', age': 42} {'school': 'Hebei', name': Tom', age': 42}

items原本是一个元组列表,里面有2对元素,分别为:( “name” , “Leo” )和(“age” , 42 ),然后通过dict方法将该元组转换为字典,就可以通过字典的方式来访问元组。实例代码:

phonebook中有 ("Alice", "1234") (“Bela”, "2345") 两个元组,通过dict转换之后,打印到控制台,结果就是: {'Bela': '2345', 'Alice': '1234'} , 从结果的格式可以看到,变量d已经是一个字典格式。当调用: d['Bob'] = '55555' 的时候,原来字典中没有Bob,经过这样一个操作,就相当于给原来额字典添加了一个元素,所以看到打印出来的结果就多了一个键值对了。 d['Alice'] = '4321' 就相当于修改了键为Alice的元组。

基本操作

字典都有哪些操作呢?以下,我们来看看一些最基本,最常用的操作。

  • len(d),d为字典,计算字典d的键值对数量
  • d[k], 返回关联到键 k上的值
  • d[k] = v,将值 v关联到键 k上
  • del d[k],删除键为 k的项
  • k in d, 检查d中是否包含有键为 k的项

代码示例:

# 基本字典操作 
# 定义一个字典
phonebook = {"Alice" : "1234" , "bob" : "3456" ,"Bela" :"01031" }
# 打印键值对数量,字典的大小
print(len(phonebook)) 
# 打印Alice的值
print(phonebook[ "Alice" ])
# 修改Alice的值
phonebook[ "Alice" ] = "4321"
# 打印当前字典
print (phonebook) 
del phonebook["Alice"]
# 打印当前字典
print (phonebook) 
# 判断Alice是否存在
if "Alice" in phonebook:
    print (True )
else :
    print (False )

执行结果:

如上操作,对Alice进行修改,删除,最后寻找Alice的时候发现没有找到,其原因就是,前面已经删除了。如果前面我们删除的是Bob,那么,判断Alice是否存在的结果就是True了,示例如下:

如上代码,结果中,Alic就有了。这就是字典的基本的操作,重新赋值,返回键的值,计算长度,新增,删除等。字典也是Python常用的数据类型,之所以常用,一方面,键值对的应用较为普遍,另一方面在于键值的查询效率非常高,是O(1)的时间复杂度。

IT赶路人

专注IT知识分享