·学习Python的人,一开始需要学习Python自带的数据结构,这些结构基本也够用,但是深入学习之后就会发现有时自带数据结构不是那么好用,而Python的库众多,如何选择呢?
·本文介绍了几乎所有常用类型的数据结构,并介绍了如何选择数据结构(见脑图中的黑体字),欢迎收藏使用。
一、字典、映射和散列表
1.1 dict
Python自带的字典数据类型,首选字典实现,时间复杂度为O(1)。
1.2 collections.OrderedDict
按照插入顺序排序,需要此特性可以选择
d=collections.OrderedDict(one=1,two=2,three=3)
d['four']=4
1.3 collections.defaultdict
为缺失的键返回默认值,需要此特性可以选择
dd=collections.defaultdict(list) # 默认以列表方式创建
dd['abc'] # 未知的值会默认创建一个键值为list
1.3 collections.ChainMap
多个字典一起使用,需要此特性可以选择,适用于Python3
原理:查找时会逐个遍历每个字典,但是插入更新删除操作只会作用于其中的第一个字典
dict1 = {
1:"abc"}
dict2 = {
2:"def"}
chain = collections.ChainMap(dict1, dict2) # 合成一个字典使用
print chain
二、数组
2.1 列表
原理:可变动态数组
支持多类型的可变数组
缺点:支持多种类型会导致数据存储得不是很紧凑,占用较大空间。
用法:
arr=['one','two','three']
arr[1]='hello'
del arr[1] #删除元素
arr.append(23) #添加元素,可以是任何元素
2.2 元祖
支持多类型的不可变数组
元祖是不可变的,因此创建之后就不能修改,只能依照这个元祖创建另一个元祖。
用法:
arr='one','two','three'
arr[1]='hello' # 不可变,出错
del arr[1] #不可删,出错
print arr + (23,) #可以持有类型元素,但是添加元素会创建新