Python 容器数据类型
在集合中,有一些容器数据类型,它们是 Python 通用内置容器(如 dict、list、set 等)的替代方案。
其中一些容器包括:
序号 | 容器及描述 |
---|---|
1 | namedtuple() 用于创建具有名称字段的元组子类 |
2 | deque 使用列表类型数据创建队列 |
3 | Counter dict 的子类,用于统计哈希表对象 |
4 | ChainMap 用于创建多个映射的单个视图 |
5 | OrderedDict dict 的子类,其中数据以有序的方式添加 |
6 | UserList list 的包装器,以便于访问。 |
要使用此模块,我们应该使用以下方式导入它:
import collections
Deque 对象
Deque 本质上是栈和队列结构的泛化,它从左到右初始化。它使用列表对象来创建 deque。
一些与 Deque 相关的函数:
序号 | 函数及描述 |
---|---|
1 | append(x) 在 deque 的右侧添加元素 x |
2 | appendleft(x) 在 deque 的左侧添加元素 x |
3 | clear() 清空 deque |
4 | count(x) 统计 deque 中 x 出现的次数 |
5 | index(x[, start[,stop]]) 返回 x 的位置。如果定义了 start 和 stop,则将在该范围内查找 |
6 | insert(i, x) 在 deque 的位置 i 插入 x |
7 | pop() 删除并返回右侧的元素 |
8 | popleft() 删除并返回左侧的元素 |
9 | reverse() 反转 deque 的内容 |
10 | rotate(n = 1) 将 deque 向右旋转 n 次 |
示例代码
import collections as col my_deque = col.deque('124dfre') print(my_deque) print("Popped Item: " + str(my_deque.pop())) print("Popped Item From Left: " + str(my_deque.popleft())) print(my_deque)
输出
deque(['1', '2', '4', 'd', 'f', 'r', 'e']) Popped Item: e Popped Item From Left: 1 deque(['2', '4', 'd', 'f', 'r'])
Counter 对象
Counter 是 dict 类型对象的子类。它可以用于统计键值。Counter 仅允许整数值。
一些与 Counter 相关的函数:
序号 | 函数及描述 |
---|---|
1 | elements() 返回元素,其次数与计数器值相同。 |
2 | most_common([n]) 此函数返回计数器中最常用的 n 个元素的列表。如果未指定 n,则将返回所有元素。 |
3 | subtract(iterable or mapping) 从两个计数器对象中减去计数器值,其中键匹配。 |
4 | update(iterable or mapping) 它添加值而不替换值,其中键匹配。 |
示例代码
import collections as col text_list = ['ABC','PQR','ABC','ABC','PQR','Mno','xyz','PQR','ABC','xyz'] my_counter = col.Counter() for element in text_list: my_counter[element] += 1 print(my_counter) print(my_counter.most_common(2))
输出
Counter({'ABC': 4, 'PQR': 3, 'xyz': 2, 'Mno': 1}) [('ABC', 4), ('PQR', 3)]
ChainMap 对象
ChainMap 用于将字典封装到单个单元中。
一些 ChainMap 成员:
序号 | 函数及描述 |
---|---|
1 | maps 它用于返回键及其对应值。 |
2 | new_child(m = None) 此函数用于在链的第一个位置插入一个新字典。 |
示例代码
import collections as col con_code1 = {'India' : 'IN', 'China' : 'CN'} con_code2 = {'France' : 'FR', 'United Kingdom' : 'GB'} code = {'Japan' : 'JP'} chain = col.ChainMap(con_code1, con_code2) print("Initial Chain: " + str(chain.maps)) chain = chain.new_child(code) #Insert New Child print("Final Chain: " + str(chain.maps))
输出
Initial Chain: [{'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}] Final Chain: [{'Japan': 'JP'}, {'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]
广告