Python开箱即用,有很多很棒的模块。 最有用的方法之一是收藏 。 它包含“用于创建容器的特殊类型”,是通用dict , list , set和tuple的替代形式。 下面我们看模块中包含的三个类,这些类是大多数python专家遇到的,但经常忘记付诸实践。
命名元组
很难高估命名元组对数据科学家的有用性。 假设您正在创建一个新模型,并不断向列表中添加新功能,然后计划将其提供给机器学习框架。 随着特征数量的增加,您迟早会开始感到困惑,而忘记了哪个索引负责什么。 更糟糕的是,如果同事必须使用您的代码:他们可能根本不了解任何内容。
只需几行就可以使脚本井井有条 。 请参阅:
from collections import namedtuple Features = namedtuple('Features', ['age', 'gender', 'name']) row = Features(age=22, gender='male', name='Alex') print(row.age)
现在,您可以使用名称来访问订单项,而无需指定索引,这使代码更加简洁。
柜台
顾名思义, Counter很重要。 听起来很简单,但是数据科学家需要不断进行计数 ,因此该工具在实践中非常有用。
有多种创建计数器的方法,但最简单的方法是使用值列表对其进行初始化:
from collections import Counter ages = [22, 22, 25, 25, 30, 24, 26, 24, 35, 45, 52, 22, 22, 22, 25, 16, 11, 15, 40, 30] value_counts = Counter(ages) print(value_counts.most_common())
运行此代码(顺便说一句,可以通过将相应的代码段传递到pythonanywhere.com/gists/来完成 ),您将看到:
[(22, 5), (25, 3), (24, 2), (30, 2), (35, 1), (40, 1), (11, 1), (45, 1), (15, 1), (16, 1), (52, 1), (26, 1)]
按值的流行程度降序排列的元组列表,其中元组的第一个元素是值,第二个是它在原始列表中出现的频率。 事实证明,两行代码足以确定“ 22”是最常见的年龄,并且发生了5次。
默认值
标准库中我最喜欢的工具之一。 DefaultDict-具有任何新键默认值的字典。 一个例子:
from collections import defaultdict my_default_dict = defaultdict(int) for letter in 'the red fox ran as fast as it could': my_default_dict[letter] += 1 print(my_default_dict)
返回值:
defaultdict(<type 'int'>, {'a': 4, ' ': 8, 'c': 1, 'e': 2, 'd': 2, 'f': 2, 'i': 1, 'h': 1, 'l': 1, 'o': 2, 'n': 1, 's': 3, 'r': 2, 'u': 1, 't': 3, 'x': 1})
使用常规词典时,您将不得不不断检查键是否存在,并手动初始化不存在的键。 在上面的示例中,对于每个不存在的键,已经有一个默认值0。这使您可以编写代码更清晰,更清晰 。
除了整数以外,DefaultDict通常与空列表结合使用以开始添加没有样板的项目。
转到干净的代码!
尝试记住您是否可以将集合中的类应用于最近解决的任务。 有时,“重新发现”标准库的旧模块比掌握新工具更有用。