Python中的defaultdict模块和namedtuple模块的简单入门指南

yizhihongxing

下面是 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 的命名元组,它有 nameagegender 三个字段。

在后面的代码中,我们用 Person() 创建了一个具有特定字段值的命名元组,并将其指定为变量 p。然后,我们打印 p,它就会被打印成一个元组。

2.访问命名元组

调用元组变量时,也可以像使用字典或对象那样使用它的字段的名称来访问元祖的值,这让元组的访问更加直观:

print(p.name)
print(p.age)
print(p.gender)

输出结果为:

Tom
18
Male

我们可以看到,通过 . 运算符来访问元祖的值非常方便。

这就是 defaultdict和 namedtuple 的简单入门指南。通过这两个模块的使用,可以让 Python 编程变得更加简便和高效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中的defaultdict模块和namedtuple模块的简单入门指南 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 分析Python中解析构建数据知识

    分析Python中解析构建数据知识是数据分析和爬虫中非常重要的一环,本文将介绍Python中解析构建数据的完整攻略。 网页解析 在进行数据爬取时,我们往往需要通过解析网页来获取所需的数据。Python中常用的网页解析库有如下几种: 1. BeautifulSoup BeautifulSoup是一种HTML和XML的解析库,可以将HTML或XML文档转换成树形…

    python 2023年5月13日
    00
  • 使用 ngrok 进行 Python 套接字服务器端口转发

    【问题标题】:Python socket server port forwarding with ngrok使用 ngrok 进行 Python 套接字服务器端口转发 【发布时间】:2023-04-05 18:54:01 【问题描述】: 我正在用 python、sockets 制作一个 cli-chat 系统。当服务器和客户端在同一台机器上时,代码可以正常工…

    Python开发 2023年4月6日
    00
  • python根据文件名批量搜索文件

    下面我会给出一个详细的 tutorial,教你如何使用 Python 根据文件名批量搜索文件。 步骤1:导入必要的模块 在开始之前我们需要导入两个非常重要的模块:os 和 fnmatch。os 库为操作系统提供了接口函数,fnmatch 则提供了 Unix shell 样式的通配符,通过这两个模块的结合能力我们可以实现在特定文件夹内根据文件名批量搜索文件。 …

    python 2023年6月5日
    00
  • Python爬虫之教你利用Scrapy爬取图片

    下面我将详细讲解“Python爬虫之教你利用Scrapy爬取图片”的完整攻略。 标题 简介 在介绍爬虫之前,我们先介绍下Scrapy。Scrapy是一个Python编写的爬虫框架,它提供了一套完整的爬虫工具链,可用于从网站上提取结构化数据(例如,爬取图片、爬取文字信息等)。 安装Scrapy 要使用Scrapy,需要先将其安装,可以使用以下命令进行安装: p…

    python 2023年5月14日
    00
  • Python学习之sys模块使用教程详解

    Python学习之sys模块使用教程详解 简介 Python的sys模块提供了访问与Python运行环境相关的变量和函数的方法。其中包含了一组专用的属性和方法,因此使用它可以让Python程序员更好地与计算机系统进行交互。 sys模块的常用方法 sys.argv sys.argv是一个包含命令行参数的列表,第一个参数是程序本身路径。如果没有命令行参数,那么这…

    python 2023年5月14日
    00
  • 使用 Selenium 和 Python 查找网页上的所有元素

    【问题标题】:Find all elements on a web page using Selenium and Python使用 Selenium 和 Python 查找网页上的所有元素 【发布时间】:2023-04-01 13:28:01 【问题描述】: 我正在尝试使用Selenium 浏览网页并创建一组具有特定类名的所有元素,所以我一直在使用: el…

    Python开发 2023年4月8日
    00
  • 如何用NumPy抑制小数的科学符号的使用

    使用NumPy抑制小数的科学符号可以让我们更方便地看到精确的小数值,以便更好地进行数据分析和预测。以下是使用NumPy抑制小数的科学符号的完整攻略: 1. 设置NumPy的全局浮点格式 在NumPy中,可以使用set_printoptions()函数设置全局浮点格式,如下所示: import numpy as np # 设置全局浮点格式 np.set_pri…

    python-answer 2023年3月25日
    00
  • python数据结构之图的实现方法

    以下是关于“Python数据结构之图的实现方法”的完整攻略: 简介 图是一种常用的数据结构,用于表示对象之间的关系。在本教程中,我们将介绍如何使用Python实现图,包括邻接矩阵和邻接表两种实现方法。 邻接矩阵 邻接矩阵是一种常用的图的实现方法,它使用二维数组表示图中的节点和边。在邻接矩阵中,每个节点都对应数组中的一行和一列,如果两个节点之间有边相连,则在对…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部