python 中defaultdict()对字典进行初始化的用法介绍

下面是关于“python 中defaultdict()对字典进行初始化的用法介绍”的详细攻略:

什么是 defaultdict()

在Python中,我们经常需要使用字典(dict)这个数据结构,字典是一个无序的键值对(key-value)集合,每个键都不同,且可以通过键来访问其对应的值。但是,当我们要使用一个没有初始化的字典时,如果该字典中的键还不存在时(类似于空缺),那么我们会遇到一个 KeyError,导致程序崩溃。这时就需要使用 defaultdict() 进行字典的初始化了。

defaultdict是python内置模块collections中的类,它的一个重要特点就是支持默认值。当我们使用 defaultdict() 初始化一个空字典时(我们在初始化时要传入一个默认值参数),如果在字典中查询一个不存在的key,它就会返回这个默认值,而不是一堆错误。

defaultdict()的参数

defaultdict()的唯一一个参数是default_factory,可以是一个函数/类类型/字符串等,它定义了默认值的类型和值。当我们使用字典时,如果字典中不存在查询的key值,那么程序不会报错而是直接创建一个默认值并返回,这个默认值可以在 defaultdict() 的调用时定义。

defaultdict()的用法

首先,我们需要导入collections模块中的defaultdict类:

from collections import defaultdict

接下来,我们创建一个 defaultdict 对象,并将一个列表作为默认值:

numbers = defaultdict(list)

这个列表可以作为所有缺失键的默认值。我们可以像使用普通字典一样使用 defaultdict。

例如,我们添加两个新键,然后在尝试访问一个不存在的键时,它会返回一个新的空列表。

numbers['one'].append(1)
numbers['two'].append(2)
numbers['three'].append(3)
print(numbers['one'])
# output: [1]
print(numbers['four'])
# output: []

我们还可以将默认值设置为int,类似于下面这样:

counts = defaultdict(int)

这样做可以在尝试访问不存在的键时返回0,例如:

counts['one'] += 1
counts['two'] += 2
counts['three'] += 3
counts['four'] += 4
print(counts)
# output: defaultdict(<class 'int'>, {'one': 1, 'two': 2, 'three': 3, 'four': 4})

defaultdict()的示例

下面给出一个 defaultdict() 的示例,用于统计每个词出现的次数:

from collections import defaultdict
words = [
    'apple', 'banana', 'orange',
    'apple', 'banana', 'banana',
    'orange', 'orange', 'orange'
]
word_count = defaultdict(int)
for word in words:
    word_count[word] += 1
print(word_count)
# output: defaultdict(<class 'int'>, {'apple': 2, 'banana': 3, 'orange': 4})

在这个示例中,我们将 defaultdict() 初始化为一个int类型,表示默认值为0,然后遍历给定的单词列表,对每个单词进行计数。如果一个单词在字典中不存在,那么它的默认值将自动为0,然后我们可以简单地将次数加1。

最后输出字典中每个单词出现的次数。

另外一个示例是,我们可以使用 defaultdict() 来寻找字符串中出现次数最多的字符。代码如下:

from collections import defaultdict
string = 'abacdddefg'
char_count = defaultdict(int)
for char in string:
    char_count[char] += 1
most_frequent_char, count = max(char_count.items(), key=lambda x: x[1])
print(f'The most frequent character is "{most_frequent_char}", which appears {count} times.')
# output: The most frequent character is "d", which appears 3 times.

在这个例子中,我们首先用 defaultdict() 创建了一个计数字典,将每个字符的出现次数增加1。然后,我们使用 Python内置函数max()查找char_count.items()中出现次数最多的项目,并返回其键和值作为元组,其中 lambda函数根据每个项目的值进行排序。最后我们输出出现最频繁的字符和其出现次数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 中defaultdict()对字典进行初始化的用法介绍 - Python技术站

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

相关文章

  • python关于excel多个sheet的导入导出方式

    下面我将为您提供一个完整的“Python关于Excel多个Sheet的导入导出方式”的实例教程。 导入所需模块 我们将使用pandas和xlrd模块来处理Excel文件。其中pandas用于数据处理,xlrd用于读取Excel文件数据。 import pandas as pd import xlrd 从Excel文件中读取多个sheet 我们可以使用Pand…

    python 2023年5月13日
    00
  • python中字符串内置函数的用法总结

    为了更好地让读者了解并掌握Python字符串内置函数的使用方法,本文将从以下几个方面进行介绍: Python字符串的基本操作 字符串内置函数的分类 字符串内置函数的用法总结 Python字符串的基本操作 字符串是Python中的一种基本数据类型,可以用单引号或双引号表示,例如: text1 = ‘hello world!’ text2 = "Pyt…

    python 2023年6月5日
    00
  • python基于turtle绘制几何图形

    下面我为大家详细讲解如何使用python基于turtle绘制几何图形的攻略。 准备工作 在开始绘制之前,我们需要安装turtle库。在终端输入以下命令即可安装: pip install turtle 安装完成后,可以输入以下代码测试库是否安装成功: import turtle t = turtle.Pen() t.forward(100) 如果窗口弹出并出现…

    python 2023年6月3日
    00
  • Python实现调度算法代码详解

    Python实现调度算法代码详解 调度算法是一种常用的算法,它可以用于优化任务的执行顺序,从而提高任务的执行效率。在Python中,可以多种法实现调度算法,如贪心算法、动态规划算等。本文将详细讲解Python实现调度算的整攻略,包括算法原理、Python实现过程和示例。 算法原理 调度算法的基本思想是根据任务的执行时间和优先级,确定任务的执行顺序,从而提任务…

    python 2023年5月14日
    00
  • 使用scrapy ImagesPipeline爬取图片资源的示例代码

    使用Scrapy内置的ImagesPipeline可以非常方便地爬取网页上的图片资源。下面是完整的攻略和示例代码: 1. 在settings.py中设置ImagesPipeline 首先需要在项目的settings.py文件中进行一些配置。具体如下: ITEM_PIPELINES = { ‘scrapy.pipelines.images.ImagesPipe…

    python 2023年5月19日
    00
  • Python sorted函数详解(高级篇)

    Pythonsorted函数详解(高级篇) Python中的sorted()函数是一种高级排序函数,它可以对列表、元组、字典等数据类型进行排序。本攻略将详细讲解sorted()的用法,包括基本用法、高级用法、自定义排序等。 基本用法 我们可以使用sorted()函数对列表进行排序。以下是示例代码,演示如何使用sorted()函数对列表进行排序: lst = …

    python 2023年5月13日
    00
  • JS树形菜单组件Bootstrap TreeView使用方法详解

    下面我将详细讲解使用JS树形菜单组件Bootstrap TreeView的方法及示例。 Bootstrap TreeView简介 Bootstrap TreeView是一个基于Bootstrap的树形插件,可以用于创建树形目录、提供搜索功能,支持动态加载数据、拖拽排序等常见的树形操作。 使用步骤 1. 引入必要的文件 Bootstrap TreeView依赖…

    python 2023年6月13日
    00
  • parser.add_argument中的action使用

    argparse是Python内置的命令行参数解析模块。在使用add_argument方法时,可以通过action参数指定对参数的特殊处理方式。下面我将详细讲解parser.add_argument中的action使用的完整攻略,包括常用的几种action和它们的用法。 store 使用store时,将参数值存储到args的命名空间中。如果在命令行中指定了参…

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