记录一下python的数据结构 - dict
- python内置,在其他语言中称为map
- 使用键-值(key-value)存储
优点是查找速度非常快
>>> d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
>>> d[‘Michael’]
= 95>>> d[‘Adam’] = 67 #通过key值放入数据
>>> d[‘Adam’]
= 67>>> ‘Thomas’ in d #通过in判断来key是否存在
= False>>> d.get(‘Thomas’) #dict提供get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get(‘Thomas’, -1)
= -1>>> d.pop(‘Bob’) #删除key用pop(key)方法,对应的value也会从dict中删除
>>> d
= {‘Michael’: 95, ‘Tracy’: 85}>>> D.has_key(key) #有该键返回TRUE,否则FALSE
>>> D.keys() #返回字典键的列表
>>> D.values() #返回字典键的列表
>>> D.items()
>>> D.update(dict2) #增加合并字典
>>> D.popitem() #得到一个pair,并从字典中删除它;已空则抛异常
>>> D.clear() #清空字典,同del dict>>> D.copy() #拷贝字典
>>> D.cmp(dict1,dict2) #比较字典(优先级为元素个数、键大小、键值大小): 第一个大返回1,小返回-1,一样返回0
#dictionary的复制
>>> dict1 = dict #别名,指向同一个字典>>>dict2=dict.copy() #克隆,指向不同的字典
注意:
- dict内部存放的顺序和key放入的顺序没有关系;
- dict和list比较:
- dict查找和插入的速度极快,不会随着key的增加而增加;
- dict需要占用大量的内存,内存浪费多;
- list查找和插入的时间随着元素的增加而增加;
- list占用空间小,浪费内存很少。
- dict的key必须是不可变对象;因为dict根据key来计算value的存储位置(哈希算法)。要保证hash的正确性,作为key的对象就不能变。python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的。
- dict的value可以是任意类型
本篇博客主要参考自
《用python做科学计算》
《Python自学笔记之基础内容回顾》
《Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结 》
《 Python list 操作》
《列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 的基本方法 》
《python 2.7教程 - 廖雪峰》