定义
Python中有一个叫作dictionary的对象类型,翻译过来就是“字典”,用dict表示。
创建字典
创建空的字典
|
|
字典dict是以键值对的形式存储数据。比如"name":"liu"前面的name叫作键(key),后面的liu是前面的键所对应的值(value)。在一个字典中,键是唯一的,不能重复。值则对应于键,值可以重复。
键值之间用冒号隔开,每一对键值之间用逗号隔开。
添加字典
|
|
修改字典
|
|
结果可以看出,字典可以原地地修改,即它是可变的,并且不会创建新的对象。
利用元组创建字典
|
|
使用fromkeys创建字典
|
|
特别注意的是,字典中的键必须是不可变对象,值可以是任意类的对象。
|
|
访问字典的值
字典类型的对象是以键值对的形式存储数据的,所以只要知道键就能得到值,这在本质上就是一种映射关系。
|
|
基本操作
len(d)
返回字典d中键值对的数量
|
|
d[key]
返回字典d中的键key的值
|
|
d[key] = value
将值赋给字典d中的键key
|
|
del d[key]
删除字典d中的键key值对
|
|
key in d
检查字典d中是否含有键为key的项
|
|
字符串格式化输出
|
|
相关概念
关联数组
在计算机科学中,关联数组又称为映射(Map)、字典(Dictionary),是一个抽象的数据结构,它包含着类似于键值的有序对。这种数据结构包含以下几种常见的操作:
- 向关联数组添加键值对
- 从关联数组内删除键值对
- 修改关联数组内的键值对
- 根据已知的键寻找值
字典问题是设计一种能够具备关联数组特性的数据结构。解决字典问题的常用方法是散列表,但有些情况也可以直接使用有地址的数组、二叉树,或者其他结构。
散列表
散列表(hash table,也叫哈希表),是根据关键字而直接访问在内存存储位置的数据结构。即把键值通过一个函数的计算,映射到表中的一个位置来访问记录,加快了查找速度。这个映射函数称为散列函数,存放记录的数组称为散列表。
字典的函数
拷贝
浅拷贝:Python在所执行的复制动作中,如果是基本类型的数据,就在内存中新建一个地址存储,如果不是基本类型,就不会新建一个地址,而是用标签引用原来的对象。copy()实现的是浅拷贝
深拷贝:无论是基本数据类型还是其他类型都会新建一个地址来存储。deepcopy()实现的是深拷贝
copy()
|
|
deepcopy()
|
|
clear
clear的作用是将字典清空,得到的是空字典。del是将字典删除,内存中就没有它了。
|
|
如果要清空一个字典,还能够使用x = {}这种方法,但这种方法的本质是将变量a的引用转向了{}这个对象,那么原来的对象呢?原来的对象称为了断了线的风筝,这样的东西称为在Python中称为垃圾,而且Python能够自动将这样的垃圾回收。
get和setdefault
得到字典中的某个值
get
|
|
dict.get()和dict[key]的区别在于:如果键不在字典中,前者返回None,后者抛出异常
setdefault
|
|
items/iteritems,keys/iterkeys,values/itervalues
|
|
pop和popitem
删除字典键值对
|
|
update
更新字典
|
|
has_key
判断字典中是否存在某个键
|
|