python中defaultdict用法实例详解

 更新时间:2022年09月14日 15:32:46   作者:IT之一小佬  
python中的dict是一个重要的数据类型,知道如何使用这个数据类型很简单,但是这个类型使用过程中容易进入一些误区,下面这篇文章主要给大家介绍了关于python中defaultdict用法的相关资料,需要的朋友可以参考下

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])

运行效果:

setdefault()和defaultdict()的区别:

setdefault()

setdefault()是字典的一个实例方法,接收两个参数,用法和字典的get()方法相似,但是比get()方法更加强大。都为字典的key设置一个默认值。

二者的区别是:get 方法设置的默认值不会改变原字典, 而setdefault设置的默认值会改变原字典的值。

示例代码:

dic1 = {"A": "a", "B": "b"}
x = dic1.get("E", "e")
print(x)
print(dic1)
 
dic2 = {"C": "c", "D": "d"}
y = dic2.setdefault("E", 'e')
print(y)
print(dic2)

 defaultdict()

defaultdict是属于collections 模块下的一个工厂函数,用于构建字典对象,接收一个函数(可调用)对象为作为参数。参数返回的类型是什么,key对应value就是什么类型。

示例代码:

from collections import defaultdict
 
lst = [("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")]
dic = defaultdict(list)
for key, value in lst:
    dic[key].append(value)
print(dic)

总结 

到此这篇关于python中defaultdict用法的文章就介绍到这了,更多相关python defaultdict用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python对excel的基本操作方法

    Python对excel的基本操作方法

    这篇文章主要介绍了Python对excel的基本操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 利用Python实现智能合约的示例详解

    利用Python实现智能合约的示例详解

    智能合约是一种由计算机程序编写的自动化合约,它可以在没有第三方干预的情况下执行交易和契约条款。这篇文章主要介绍了如何利用Python实现智能合约,需要的可以参考一下
    2023-04-04
  • 在Python下尝试多线程编程

    在Python下尝试多线程编程

    这篇文章主要介绍了在Python下多线程编程的尝试,由于GIL的存在,多线程在Python开发领域一直是个热门问题,需要的朋友可以参考下
    2015-04-04
  • 通过Python实现控制手机详解

    通过Python实现控制手机详解

    如今python是非常多人学习的,而手机也几乎人手一部。对于很多Python学习者,想用python来完成android手机中各种炫酷的的控制,adb是必不可缺少的工具之一
    2021-10-10
  • Python爬虫库requests-html进行HTTP请求HTML解析等高级功能应用

    Python爬虫库requests-html进行HTTP请求HTML解析等高级功能应用

    这篇文章主要为大家介绍了Python爬虫库requests-html进行HTTP请求HTML解析JavaScript渲染以及更高级的功能应用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python实现简单的四则运算计算器

    Python实现简单的四则运算计算器

    相信大家在学习数据结构时,就学习了简单四则运算表达式求解的一个算法,可惜一直没有自己动手实现过这个算法。最近重拾数据结构与算法,恰巧又正在用Python比较频繁,所幸就用它来实现这个算法,虽然网上有很多代码,不过作为一个学习者,还是应当亲自动手实现。
    2016-11-11
  • python开发App基础操作API使用示例过程

    python开发App基础操作API使用示例过程

    这篇文章主要为大家介绍了python开发App基础操作API使用的示例过程有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10
  • 一次python-flask蓝图的踩坑记录

    一次python-flask蓝图的踩坑记录

    简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能,在Flask中,使用蓝图可以帮助我们实现模块化应用的功能,这篇文章主要给大家介绍了关于python-flask蓝图踩坑的相关资料,需要的朋友可以参考下
    2021-08-08
  • python中matplotlib的颜色以及形状实例详解

    python中matplotlib的颜色以及形状实例详解

    在Python中经常使用matplotlib画图,为了让图像显示的更加好看,经常需要对图表点、线形状及颜色进行设置,下面这篇文章主要给大家介绍了关于python中matplotlib的颜色以及形状的相关资料,需要的朋友可以参考下
    2022-01-01
  • python实现12306抢票及自动邮件发送提醒付款功能

    python实现12306抢票及自动邮件发送提醒付款功能

    本文给大家分享python实现12306抢票及自动邮件发送提醒付款功能,文章没有给大家贴出完整代码,只是技术交流,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-03-03

最新评论