1 简介

林小森

字典是Python重要的数据类型,字典是由“键—值”对组成的集合,字典中的“值”通过“键”来引用。 字典也称为关联数组、映射或散列表。

Python字典利用了“散列”方法,使用专门的散列函数完成,即字典中的每个键都被转换为一个数字—散列值。

字典中值存储在一个底层列表中,并用散列值作为索引。访问值时,将提供的键转为散列值,再跳到列表的相应位置。 使用“键”来访问字典值效率极高。

另外与列表一样,字典也是可以改变的:可以添加、删除或修改“键—值”对

2 创建字典

创建字典格式:dictionary={key1:value1, key2:value2, …, keyn:valuen)} # 创建n个“键—值”对组成的字典

dictionary={} #创建空字典

注意,对于字典的键有两个限制:字典中的键必须独一无二,即在同一个字典中,任何两个键—值对都不能相同;

键必须是不可变的。因此,字典键不能是列表、字典

3 字典的访问

字典的访问与元组、列表有所不同,元组和列表是通过数字索引获取对应的值,而字典是通过key值获取相应的value值。

字典访问格式: value=dict[key]

注意事项:字典的添加、删除和修改只需执行一条赋值语句即可,例如:dict['x']='value'

字典没有remove操作。删除字典元素可条用内置函数del()完成。

4 字典的常用方法


5 字典的排序和复制

字典的排序可以使用内置函数sorted()实现

# sorted(iterable, key=None, reverse=False)
dict={'a':'apple', 'b':'grape'', 'c': 'orange', 'd': 'banana'}
print(dict)
# 按照key排序
print(sorted(dict.items(), key=lambda d:d[0])
# 按照value排序
print(sorted(dict.items(), key=lambda d:d[1])

排序结果:

关于复制复制分为深拷贝和浅拷贝,不只限于字典,适用于Python的任何对象。可使用copy模块来实现对象的深拷贝和浅拷贝,deepcopy()用于深拷贝,copy()用于浅拷贝。

深拷贝能够拷贝对象内部所有数据和引用,引用相当于C语言中指针的概念,Python并不存在指针,但是变量的内存结构中通过引用来维护变量。

浅拷贝只是复制数据,并没有复制数据的引用,新的数据和旧的数据使用同一块内存空间。

例如:字典B浅拷贝字典A的数据,如果字典B的数据发生添加、删除或修改操作,字典A的数据也将发生变化;

相反,如果字典B深拷贝字典A的数据,字典B的数据即使发生变化,也不会影响的字典A。