• Python中的defaultdict方法


    前言:

    嗨喽~大家好呀,这里是魔王呐 ❤ ~!

    python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

    python中的dict是一个重要的数据类型,知道如何使用这个数据类型很简单,但是这个类型使用过程中容易进入一些误区,

    这篇文章主要对defaultdict方法的讲解,深入的了解dict数据类型。

    字典(dictionary)数据类型,不同于其他由数字索引的序列,字典是用”键”(key)来索引的。

    通常表示为dict(key: val, …),有以下特征:

    • 键可以是任何不可变(immutable)数据类型(不可变数据类型:数字,字符串、元组)(也就是说key不能为列表和字典类型);

    • 每个键必须是唯一的;

    • 字典中每一项的顺序是任意的;

    1,collections.defaultdict类的介绍:

    defaultdict是Python内建dict类的一个子类,第一个参数为default_factory属性提供初始值,默认为None。

    它覆盖一个方法并添加一个可写实例变量。它的其他功能与dict相同,但会为一个不存在的键提供默认值,从而避免KeyError异常。

    2,一般的dict类型会导致KeyError异常:

    一般dict类型:

    dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict2 = {'abc': 456};
    dict3 = {'abc': 123, 10: 20};
    dict4 = {}                     #定义空字典
    dict5 = dict()                 #定义空字典
    
    • 1
    • 2
    • 3
    • 4
    • 5
    KeyError异常:
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry']
    count = {}
    for fruit in bag:
        count[fruit] += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    错误: KeyError: ‘apple’

    defaultdict类避免KeyError异常:
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    import collections
    bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry']
    count = collections.defaultdict(int)
    for fruit in bag:
        count[fruit] += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    defaultdict(<class 'int'>, {'apple': 3, 'orange': 1, 'cherry': 2, 'blueberry': 1})
    
    • 1

    3,collections.defaultdict类使用:

    类型名称作为初始化函数参数:这个就是上面的例子。可调用函数作为初始化函数参数:

    import collections
    
    def zero():
        return 0
    dic = collections.defaultdict(zero)
    dic['bbb']
    print(dic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    defaultdict(<function zero at 0x000001754EB4B488>, {'bbb': 0})
    
    • 1

    尾语

    最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

    希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

    躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

    最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 相关阅读:
    基于Promise + XHR 封装myAxios函数
    湖仓一体电商项目(十一):编写写入DWS层业务代码
    Docker Compose快速入门及实战
    文件传输客户端 SecureFX mac中文版支持多种协议
    一文弄懂 if __name__ == “__main__“:(洒洒水啦!)
    IDEA 运行 ‘xxx‘ 时出错. 命令行过长. 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行.
    Python基于生成树机制实验的内容
    51单片机学习笔记_3 蜂鸣器,按键模块
    内网穿透——搭建私人影音媒体平台
    面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
  • 原文地址:https://blog.csdn.net/python56123/article/details/133206441