sortedcontainers库中的SortedListWithKey()函数用法解析
发布时间:2023-12-15 06:23:41
SortedListWithKey()函数是sortedcontainers库中的一个函数,用于创建一个有序的可变列表,列表中的每个元素都具有一个键值对。
该函数的语法如下:
SortedListWithKey(key=None, iterable=None)
参数:
- key:一个可调用对象,用于从每个元素中提取键。默认为None,表示元素本身就是键。
- iterable:一个可迭代对象,用于初始化列表。默认为None。
返回值:
一个新的SortedListWithKey对象。
该函数的使用示例如下:
from sortedcontainers import SortedListWithKey
# 使用元素本身作为键创建一个有序列表
lst1 = SortedListWithKey([3, 1, 2])
print(lst1) # 输出:SortedListWithKey([1, 2, 3])
# 使用元素的某个属性作为键创建一个有序列表
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'Person(name={self.name}, age={self.age})'
lst2 = SortedListWithKey(key=lambda x: x.age)
lst2.add(Person('Alice', 25))
lst2.add(Person('Bob', 20))
lst2.add(Person('Charlie', 30))
for person in lst2:
print(person)
# 输出:
# Person(name=Bob, age=20)
# Person(name=Alice, age=25)
# Person(name=Charlie, age=30)
在上面的示例中,首先使用元素本身作为键创建了一个有序列表lst1,输出结果是[1, 2, 3],这是因为有序列表默认是升序排列的。
接下来,创建了一个类Person,该类有name和age两个属性,定义了__repr__()方法以便在打印对象时能够显示对象的属性。然后,使用元素的age属性作为键创建了另一个有序列表lst2,并向其中添加了三个Person对象,分别代表Alice、Bob和Charlie,他们的年龄分别为25、20和30。最后,遍历有序列表lst2,并打印每个Person对象,输出结果显示他们按照年龄从小到大的顺序排列。
总结:
SortedListWithKey()函数用于创建一个有序的可变列表,可以指定元素的键。通过指定不同的键,可以实现不同的排序方式。有序列表内部使用二分搜索树实现,具有高效的插入和查找性能。
