import collections
0. namedtuple
-
简单使用:
# 返回的 User 为类型,而不是实例 User = namedtuple('User', ['name', 'sex', 'age']) # 对类型 User 进行实例化 user = User(name='zhang', sex='male', age=26) # User._make(['zhang', 'male', 26]) user.name user.sex user.age
-
高级应用:
Dataset = namedtuple('Dataset', ['data', 'target']) Datasets = namedtuple('Datasets', ['train', 'test', 'validation'])
1. defaultdict:存在默认值的字典
from collections import defaultdict
# 颇有一些模板类的感觉
>>> values = defaultdict(float)
>>> digit_counts = defaultdict(int)
>>> digit_counts[0]
0
>>> digit_counts[100]
0
2. Counter(计数):继承自 Dict
from collections import Counter
统计一个序列中各自元素出现的次数(被引用):
from collections import defaultdict
M = [2, 2, 0, 5, 3, 5, 7, 4]
count = defaultdict(int)
for i in M:
count[i] += 1
有了 Counter ,我们就可避免 for 循环,可将上述代码改造为:
M = [2, 2, 0, 5, 3, 5, 7, 4]
count = Counter(M)
# count:Counter({0: 1, 2: 2, 3: 1, 4: 1, 5: 2, 7: 1})
常见成员函数:
- 继承自 Dict,是一个特殊的字典;
- keys()
- values()
- items()
- most_common(k):返回由 tuple 构成的 list,tuple 为二元元组,
3. 使用 Counter 统计单词出现的次数(WordCount)
from collections import Counter
words = "hello world hello China";
splited = words.split(" ")
count = Counter(splited)
# Counter({'hello': 2, 'china': 1, 'world': 1})
4. collections.abc
python 3 中新增;
def sequence(iterable):
return iterable if isinstance(iterable, collections.abc) else tuple(iterable)