Python的常用模块之collections模块详解
1. 什么是collections模块
Python提供了一个比较重要的模块:collections,这个模块包含了一些特殊容器类型,比原生的list、dict、tuple、set等容器类型要强大得多。
collections是Python内建的一个集合模块,提供了一系列有用的集合类,是对dict、list、set、tuple等内置容器类型的扩展。
在进行Python的高级编程时,collections模块是非常常用的一个类库,这个模块提供了一些非常实用的数据结构,可以极大的提高代码的效率和健壮性。
2. collections模块的核心数据类型
关于collections模块的核心数据类型,主要有以下几个:
-
defaultdict
-
deque
-
Counter
-
OrderedDict
-
namedtupel
我们分别来说明一下这个五个核心数据类型。
2.1 defaultdict
defaultdict是一个字典类,可以指定一个default_factory函数,这个函数可以自动创建不存在的键值,从而避免了KeyError。
下面是一个示例:
from collections import defaultdict
d_int = defaultdict(int) # 相当于 d_int = {}
d_str = defaultdict(str) # 相当于 d_str = {}
d_list = defaultdict(list) # 相当于 d_list = {}
d_dict = defaultdict(dict) # 相当于 d_dict = {}
d_int[1] # 返回默认的值0
d_str["a"] # 返回默认的值""
d_list[0] # 返回默认的值[]
d_dict["key"] # 返回默认的值{}
2.2 deque
deque是“double-ended queue(双端队列)”的缩写,deque支持在两端进行queue操作。
Python中的list的特点是非常适合做一些操作,例如查找、尾部添加、头部删除,但是在头部添加、头部查找、尾部删除等操作中,list的性能不如deque。
下面是一个示例:
from collections import deque
d = deque()
d.append("a")
d.append("b")
d.append("c")
d.appendleft("d")
print(d)
输出结果为:
deque(['d', 'a', 'b', 'c'])
2.3 Counter
Counter是一个简单的计数器类,可以用来统计列表、元组等容器中元素出现的个数,可以按照value的值进行排序。
下面是一个示例:
from collections import Counter
c = Counter("hello world")
print(c)
输出结果为:
Counter({'l': 3, 'o': 2, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, 'h': 1})
2.4 OrderedDict
OrderedDict是一个按照插入顺序排序的字典类。
下面是一个示例:
from collections import OrderedDict
d = OrderedDict()
d["a"] = 1
d["c"] = 3
d["b"] = 2
print(d)
输出结果为:
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
2.5 namedtupel
namedtuple是一个命名元组类,可以将Tuple的元素按照名称进行访问。
下面是一个示例:
from collections import namedtuple
Student = namedtuple("Student", ["name", "age", "gender"])
s = Student("小明", 18, "男")
print(s.name)
print(s.age)
print(s.gender)
输出结果为:
小明
18
男
3. 小结
在本文中,我们介绍了Python中的collections模块,其中包含了一些非常实用的数据结构,如defaultdict、deque、Counter、OrderedDict和namedtupel等。切记在进行高级Python编程时,要熟练掌握这个模块的使用,可以极大的提高你的Python编程效率和健壮性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python的常用模块之collections模块详解 - Python技术站