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使用正则表达式的search()函数实现指定位置搜索功能

    以下是“Python使用正则表达式的search()函数实现指定位置搜索功能”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来搜索字符串中的模式。search()函数是re模块中最常用的函数之一,它可以在字符串中搜索指定的模式,并返回第一个匹配项。本文将详细讲解如何使用search()函数实现指定位置搜索功能。 二、解决方案 2.1 s…

    python 2023年5月14日
    00
  • Python callable内置函数原理解析

    Python callable内置函数原理解析 在Python中,callable是一个内置函数,用于判断对象是否是可以被调用的(即是否是函数)。本文将对callable函数的原理进行解析,并提供两个示例以便理解。 1. callable函数的语法格式 callable函数的语法如下: callable(object) 其中,object为要被判断的对象。 …

    python 2023年6月3日
    00
  • Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 什么是动态链接库? 动态链接库(Dynamic Link Library,缩写为DLL)是一种采用共享机制的可重定位的程序模块,能够在程序运行时被动态地装载和链接。在操作系统的运行时,当某个软件需要使用某个功能时,运行时库可以自动检测并载入这个动态链接库,使该软件最终能够使用这个功能。DLL在Windows操作…

    python 2023年5月13日
    00
  • python求前n个阶乘的和实例

    下面是详细讲解 “python求前n个阶乘的和实例” 的完整攻略。 目录 问题描述 解决方案 示例说明 示例一 示例二 问题描述 假设有一个数n,求前n个数的阶乘的和,即$1!+2!+3!+…+(n-1)!+n!$。 解决方案 我们可以使用for循环和递归两种方法来求解这个问题。 方法一:for循环 使用for循环,我们可以遍历1到n的每一个数,并求出它…

    python 2023年6月5日
    00
  • python异常处理try的实例小结

    Python异常处理try的实例小结 在Python中,异常处理是一种重要的编程技巧,可以帮助我们更好地处理程序中的错误和异常情况。try语句是Python中异常处理的核心,用来捕获处理异常。本文将详细讲解Python异常处理try的实例,包括try-except语句的基本用法、多个except语句的使用、以及try-finally语句的使用。在过程中,我们…

    python 2023年5月13日
    00
  • python如何导出微信公众号文章方法详解

    Python如何导出微信公众号文章,具体步骤如下: 1. 安装必要的 Python 包 使用 Python 程序导出微信公众号文章需要用到requests、beautifulsoup4、lxml等 Python 包。可以通过以下命令在终端中安装: pip install requests pip install beautifulsoup4 pip inst…

    python 2023年6月3日
    00
  • Python的缺点和劣势分析

    Python的缺点和劣势分析 Python是一种非常流行且使用广泛的编程语言,但在其方便和易用性之外,也有一些缺点和劣势。在本文中,我们将探究Python的缺点和劣势分析。 1. 较慢的执行速度 Python是一种解释型语言,因此其执行速度通常较慢。与其他编译型语言(如C++或Java)相比,Python通常需要更多的运行时间来执行相同的操作。这主要是由于P…

    python 2023年5月30日
    00
  • python面试题之列表声明实例分析

    当面试考察Python开发人员时,经常会涉及到关于列表声明的相关问题。Python中的列表是最常见的内置数据类型之一,它具有动态性和可变性,可以存储各种数据类型的值。在本文中,我们将解释Python中的列表声明,并提供几个示例,以帮助您更好地理解列表声明的前提条件和用法。 什么是列表声明? 列表声明是指将一个或多个值分配给列表的过程。在Python中,可以通…

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