📅  最后修改于: 2023-12-03 15:34:26.567000             🧑  作者: Mango
在Python中,排序集是一个集合数据类型,它能维护元素的顺序,且支持添加、移除和查找等操作。Python中的排序集是使用红黑树实现的,因此它的时间复杂度为O(log n)。在此介绍Python中内置的排序集模块collections
中的OrderedDict
和SortedSet
。
OrderedDict
是Python内置的一个有序字典类型。它保存了元素插入的顺序,并支持对元素的添加、删除和更新操作。下面是一些使用OrderedDict
的例子:
from collections import OrderedDict
# 创建一个空的有序字典
od = OrderedDict()
# 添加元素
od['a'] = 1
od['b'] = 2
od['c'] = 3
# 按顺序或者按key遍历
print(od) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
for key, value in od.items():
print(key, value) # a 1 b 2 c 3
# 删除元素
del od['a']
od.pop('b')
# 更新元素
od['c'] = 4
od.update({'d': 5, 'e': 6})
print(od) # OrderedDict([('c', 4), ('d', 5), ('e', 6)])
SortedSet
是第三方库sortedcontainers
中提供的排序集实现。它使用红黑树作为底层数据结构,支持添加、删除、查找等操作,时间复杂度为O(log n)。与Python中其他数据类型相比,SortedSet
有以下特点:
下面是一些使用SortedSet
的例子:
from sortedcontainers import SortedSet
# 创建空的SortedSet
s = SortedSet()
# 添加元素
s.add(3)
s.add(1)
s.add(2)
# 按顺序遍历
for element in s:
print(element) # 1, 2, 3
# 删除元素
s.remove(2)
# 查找元素
print(1 in s) # True
# 使用集合操作
s1 = SortedSet([1, 2, 3, 4, 5])
s2 = SortedSet([3, 4, 5, 6, 7])
print(s1 | s2) # SortedSet([1, 2, 3, 4, 5, 6, 7])
print(s1 & s2) # SortedSet([3, 4, 5])
Python中的排序集提供了一种有序存储和查找数据的方式。当需要维护元素的顺序时,可以使用OrderedDict
;当需要支持集合操作时,可以使用SortedSet
。