一、【写在前面】
PY是一个调包侠语言,多学一个库可以提高计算速度。Collections提供了各种数据类型和集合工具,可以很方便的处理各种数据结构。如果您有刷力扣的习惯,可以经常看到Collections和itertools的身影,经常用这两个可以做到一行解题,之前笔者介绍过了Itertools,这篇文章介绍一下Collection。
官网:collections — Container datatypes — Python 3.12.1 documentation
itertools博客:python强大的排列组合库-itertools-CSDN博客
二、【正式介绍】
这个Collections库官网文档就9个方法,一篇博客就能介绍完。
1. namedtuple:
from collections import namedtuple
# 创建一个名为 'Person' 的命名元组,包含 'name' 和 'age' 两个字段
Person = namedtuple('Person', ['name', 'age'])
# 创建一个 Person 对象
person = Person(name='Alice', age=30)
# 访问字段 print(person.name) # 输出 'Alice'
print(person.age) # 输出 30
2. deque:
from collections import deque # 创建一个空的双端队列 dq = deque() # 在队列的右端添加元素 dq.append(1) dq.append(2) # 在队列的左端添加元素 dq.appendleft(0) # 弹出右端的元素 print(dq.pop()) # 输出 2 # 弹出左端的元素 print(dq.popleft()) # 输出 0
3. Counter:
from collections import Counter # 统计字符串中字符的出现次数 text = "hello world" char_count = Counter(text) # 获取字符 'l' 的出现次数 print(char_count['l']) # 输出 3
4. OrderedDict:
from collections import OrderedDict
# 创建一个有序字典
ordered_dict = OrderedDict()
# 添加键值对
ordered_dict['a'] = 1 ordered_dict['b'] = 2
# 迭代时按照插入顺序返回键值对
for key, value in ordered_dict.items():
print(key, value)
# 输出: # a 1 # b 2
5. defaultdict:
from collections import defaultdict # 创建一个默认值为 0 的 defaultdict num_dict = defaultdict(int) # 添加键值对 num_dict['a'] = 1 # 访问不存在的键,默认值为 0 print(num_dict['b']) # 输出 0
6. ChainMap:
from collections import ChainMap
# 创建两个字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
# 创建 ChainMap 将两个字典链接在一起
combined_dict = ChainMap(dict1, dict2)
# 访问键 'b',将返回第一个字典中的值
print(combined_dict['b'])
# 输出 2
7. UserDict:
7、8、9这三个方法都带一个User,本质是一个可以自己定义方法的Class,对self.data直接操作即可。
示例用法:
from collections import UserDict
class MyDict(UserDict):
def get_keys(self):
return list(self.data.keys())
my_dict = MyDict({'a': 1, 'b': 2})
keys = my_dict.get_keys()
print(keys) # 输出 ['a', 'b']
8. UserList:
示例用法:
from collections import UserList
class MyList(UserList):
def append_twice(self, value):
self.data.append(value)
self.data.append(value)
my_list = MyList([1, 2, 3])
my_list.append_twice(4)
print(my_list) # 输出 [1, 2, 3, 4, 4]
9. UserString:
示例用法:
from collections import UserString
class MyString(UserString):
def reverse(self):
return self.data[::-1]
my_string = MyString("hello")
reversed_str = my_string.reverse()
print(reversed_str) # 输出 'olleh'
