返回顶部
首页 > 资讯 > 后端开发 > Python >Pythondefaultdict方法使用分析
  • 960
分享到

Pythondefaultdict方法使用分析

2024-04-02 19:04:59 960人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录defaultdict底层代码python的字典是否有默认值defaultdict底层代码 在字典中查找某个值时,若key不存在时则会返回一个KeyError错误而不是一个默认

defaultdict底层代码

在字典中查找某个值时,若key不存在时则会返回一个KeyError错误而不是一个默认值,这时候可以使用defaultdict函数。

注意:使用dict[key]=value时,若key不存在则报错;使用dict.get(key)时,若key不存在则会返回一个默认值。

defaultdict接受一个工厂函数作为参数,如下来构造:

dict =defaultdict( factory_function)

factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0。

defaultdict是Python内建dict类的一个字类,功能与dict相同,但它带有一个默认的值,若key值不存在时返回一个默认的值。

示例代码:

lst = ['A', 'B', 'C', 'D', 'e']
dic = {}
for i in lst:
    dic[i] += 1
print(dic)

若访问字典中的key值不存在时会报KeyError错误,这时候就可以使用defaultdict类来避免这种错误。

dict.setdefault()方法:有两个参数,第一个是参数,第二个是默认值。

示例代码:

lst = ['A', 'B', 'C', 'D', 'e']
dic = {}
for i in lst:
    dic.setdefault(i, 0)
    dic[i] += 1
print(dic)

示例代码:

from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict4[1] = 666
print(dict1[0])
print(dict2[0])
print(dict3[0])
print(dict4[0])
print(dict4[1])

运行效果:

Python的字典是否有默认值

众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(javascript中如果对象中不存在某个属性,则返回undefined)。但是有时候,字典中的每个键都存在默认值是非常方便的。例如下面的例子:

strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {} 
for kw in strings: 
    counts[kw] += 1

该例子统计strings中某个单词出现的次数,并在counts字典中作记录。单词每出现一次,在counts相对应的键所存的值数字加1。但是事实上,运行这段代码会抛出KeyError异常,出现的时机是每个单词第一次统计的时候,因为Python的dict中不存在默认值的说法。

为了解决上述问题,我们可以先加个判断语句,若key不存在,则其value值设为1

strings = ('puppy', 'kitten', 'puppy', 'puppy',
           'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
    if kw not in counts:
        counts[kw] = 1
    else:
        counts[kw] += 1

同样也可以利用setdefault的方法来设置默认值:

strings = ('puppy', 'kitten', 'puppy', 'puppy',
           'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
    counts.setdefault(kw, 0)
    counts[kw] += 1

还有一种方法来对字典进行初始化操作——defaultdict

defaultdict类就好像是一个dict,但是它是使用一个类型来初始化的:

>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['k1']
[]
>>> d
defaultdict(<class 'list'>, {'k1': []})
>>> d['k2']='kobe'
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe'})
>>> d['k3'].append('lebron')
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe', 'k3': ['lebron']})

到此这篇关于Python defaultdict方法使用分析的文章就介绍到这了,更多相关Python defaultdict内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pythondefaultdict方法使用分析

本文链接: https://lsjlt.com/news/120699.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Pythondefaultdict方法使用分析
    目录defaultdict底层代码Python的字典是否有默认值defaultdict底层代码 在字典中查找某个值时,若key不存在时则会返回一个KeyError错误而不是一个默认...
    99+
    2024-04-02
  • HTML使用方法实例分析
    本文小编为大家详细介绍“HTML使用方法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML使用方法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先使用 V...
    99+
    2024-04-02
  • Java方法使用实例分析
    这篇“Java方法使用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java方法使用实例分析”文章吧。一、方法的概念...
    99+
    2023-06-30
  • flex使用方法的示例分析
    这篇文章主要介绍flex使用方法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex是如何工作的该部分文档的内容是为用户提供关于AdobeFlex工作机制的一个快速综述。通过本章节的学习,你可以创建你的*...
    99+
    2023-06-17
  • Python数据分析 Numpy 的使用方法
    目录简介多维数组创建数组的数据类型数组维度简介 使用 Python 进行数据分析时,比较常用的库有 Numpy、Pandas、Matplotlib,本篇文章就来说一下 Numpy 的...
    99+
    2024-04-02
  • JavaScript基础使用方法实例分析
    这篇文章主要介绍“JavaScript基础使用方法实例分析”,在日常操作中,相信很多人在JavaScript基础使用方法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • ReactcreateElement方法使用原理分析介绍
    目录摘要1.创建方法2.处理type3.处理config4.处理children5.对比真正的React.createElement源码摘要 在上一篇说过,React创建元素有两种方...
    99+
    2024-04-02
  • Reactthis.setState方法使用原理分析介绍
    目录摘要1.异步的setState2.多个setState方法3.手动实现mySetState摘要 这一篇文章,主要是简单的实现一下this.setState方法,为了实现该方法,就...
    99+
    2024-04-02
  • Vue中$set()的使用方法场景分析
    目录Vue中$set()的使用方法前言$set()的应用场景一$set()的应用场景二补充:vue中$set的用法$set用于更新数组:$set用于更新对象:Vue中$set()的使...
    99+
    2023-02-18
    Vue中$set()使用 Vue中$set()用法 Vue中$set()
  • Java数组的使用方法实例分析
    这篇文章主要介绍“Java数组的使用方法实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java数组的使用方法实例分析”文章能帮助大家解决问题。一、前言学习概述:前八天我们学习了语法基础、运算...
    99+
    2023-06-30
  • 使用Python进行数据分析——方差分析
    大家好,方差分析可以用来判断几组观察到的数据或者处理的结果是否存在显著差异。本文介绍的方差分析(Analysis of Variance,简称ANOVA)就是用于检验两组或者两组以上样本的均值是否具备显著性差异的一种数理统计方法。 根据影...
    99+
    2023-09-12
    数据分析 数据挖掘 信息可视化 Powered by 金山文档
  • MySQL中case when使用方法的示例分析
    这篇文章主要介绍了MySQL中case when使用方法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们创建数据库表:CRE...
    99+
    2024-04-02
  • 使用goaccess分析nginx日志的详细方法
    最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义...
    99+
    2024-04-02
  • 全面分析Java方法的使用与递归
    目录java中方法的使用什么是方法方法的定义与使用方法如何进行调用及其方法调用过程方法的形参和实参方法重载方法签名递归java中方法的使用 什么是方法 举一个日常生活中的例子,比如我...
    99+
    2024-04-02
  • 分析Java8使用工厂方法supplyAsync创建CompletableFuture
    这篇文章主要介绍“分析Java8使用工厂方法supplyAsync创建CompletableFuture”,在日常操作中,相信很多人在分析Java8使用工厂方法supplyAsync创建CompletableFuture问题上存在疑惑,小编...
    99+
    2023-06-25
  • Vue3中简单使用Mock.js方法实例分析
    mock.js简介 官方链接:Mock.js (mockjs.com) 前端开发人员用来模拟虚拟数据,拦截ajax请求,方便模拟后端接口 安装 npm install mockjs...
    99+
    2023-05-14
    Vue3 Mock.js
  • Sql Server事务语法及使用方法实例分析
    本文实例讲述了Sql Server事务语法及使用方法。分享给大家供大家参考,具体如下: 事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全...
    99+
    2024-04-02
  • Sql Server事务语法及使用方法的实例分析
    这篇文章将为大家详细讲解有关Sql Server事务语法及使用方法的实例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实例讲述了Sql Server事务...
    99+
    2024-04-02
  • java接口使用默认方法的示例分析
    这篇文章给大家分享的是有关java接口使用默认方法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、接口中默认方法的格式:public default返回值类型方法名(参数列表) {...
    99+
    2023-06-14
  • k8s与docker空间使用分析与清理方法
    目录1. 前言2. 常见问题场景3. docker 磁盘空间使用分析及处理3.1 image镜像占用分析及解决3.2 json.log占用分析及解决3.3 Local Volumne...
    99+
    2022-12-29
    k8s 与docker空间使用 k8s 与docker空间使用 k8s docker空间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作