下面是 Python 中 defaultdict 模块和 namedtuple 模块的完整攻略。
defaultdict模块
defaultdict
是Python内置的模块,它的作用和字典很像,可以用于创建一个默认值非空的字典。具体来说,我们可以通过自定义的方式来设置字典的默认值,如果没有设置,则默认值为None
。
首先导入模块:
from collections import defaultdict
1.使用默认值
我们来看一个简单的例子。假设我们有一个需要统计单词个数的列表:
words = ['apple', 'ball', 'apple', 'car', 'dog']
接下来我们使用defaultdict
来创建一个字典,统计每个单词出现的个数,并且如果该单词没有出现过,则默认值为0
。
d = defaultdict(int)
for word in words:
d[word] += 1
print(d)
输出结果为:
defaultdict(<class 'int'>, {'apple': 2, 'ball': 1, 'car': 1, 'dog': 1})
我们可以看到,所有单词的默认值都为0
,且若某个单词出现多次,则字典中相应的值也会随之增加。
2.使用lambda表达式
通过 lambda
表达式可以自定义默认值:
d = defaultdict(lambda : "unknown")
d["name"] = "John"
print(d["name"])
print(d["age"])
输出结果为:
John
unknown
我们发现,name
字符串被赋值为 "John"
,而 age
字符串没有被赋值,因此其默认值为字符串 "unknown"
。
namedtuple模块
命名元组是 Python 标准模块库 collections 中的一个工具类,它提供了一种创建带字段名的元组的方式,使得元组可以像对象一样被访问和描述。我们通常用来表示一些简单的数据结构。
先来看看如何导入 namedtuple 模块:
from collections import namedtuple
接下来,我们看一下 namedtuple 的使用示例。
1.创建命名元组
假设有一个需求,要存储一个人的姓名、年龄和性别:
Person = namedtuple('Person', ['name', 'age', 'gender'])
p = Person('Tom', 18, 'Male')
print(p)
输出结果为:
Person(name='Tom', age=18, gender='Male')
创建命名元组需要传递两个参数,一个是元组的名称,另一个是字段名称列表。在这个例子中,我们创建了一个名为 Person
的命名元组,它有 name
,age
和 gender
三个字段。
在后面的代码中,我们用 Person() 创建了一个具有特定字段值的命名元组,并将其指定为变量 p
。然后,我们打印 p
,它就会被打印成一个元组。
2.访问命名元组
调用元组变量时,也可以像使用字典或对象那样使用它的字段的名称来访问元祖的值,这让元组的访问更加直观:
print(p.name)
print(p.age)
print(p.gender)
输出结果为:
Tom
18
Male
我们可以看到,通过 .
运算符来访问元祖的值非常方便。
这就是 defaultdict和 namedtuple 的简单入门指南。通过这两个模块的使用,可以让 Python 编程变得更加简便和高效。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中的defaultdict模块和namedtuple模块的简单入门指南 - Python技术站