python字典(一)——defaultdict的学习

一、前言

本页主要用来记录python字典的一些知识

二、Python中的defaultdict的详解

2.1defaultdict返回的默认值

defaultdict顾名思义默认字典,这个字典属于普通字典的一个子集,是对普通字典的改进

dcit的使用:

当访问字典里面不存在的key时会报错

defaultdict的使用:

当访问字典里面不存在的key时会返回默认值

事实上,defaultdict还可以返回其他默认值,defaultdict一般都会接受一个工厂函数作为参数,不同的参数返回不同的默认值

语法:dict =defaultdict( factory_function)

其中factory_function可以为set、list、str、int、dict等,当访问不存在的key

defaultdict( set)返回set()

defaultdict(list)返回[]

defaultdict( str)返回空字符串

defaultdict( int)返回0

defaultdict(dict)返回dict

举例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

from collections import defaultdict

dict1 = defaultdict(set)

dict2 = defaultdict(list)

dict3 = defaultdict(str)

dict4 = defaultdict(int)

dict5 = defaultdict(dict)

print(dict1[1])

print(dict2[1])

print(dict3[1])

print(dict4[1])

print(dict5[1])

得到:

set()
[]

0
{}

2.2.defaultdict的使用

工厂函数为list

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

   18

   19

from collections import defaultdict

def test2():

    test_list = [("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")]

    test_default_dict = defaultdict(list)

    print(test_default_dict)

    for key, value in test_list:

        test_default_dict[key].append(value)

    print(test_default_dict)

    print(type(test_default_dict))

    for key, value in test_default_dict.items():

        print(key, value)

if __name__ == "__main__":

    test2()

输出:

defaultdict(<class 'list'>, {})

defaultdict(<class 'list'>, {'A': ['1', '2', '3'], 'B': ['1', '2', '3']})

<class 'collections.defaultdict'>

A ['1', '2', '3']

B ['1', '2', '3']

工厂函数为str

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

def test3():

    test_str = "hello_default_dict"

    test_default_dict = defaultdict(str)

    print(test_default_dict)

    for single_str in test_str:

        test_default_dict[single_str] = single_str

    print(test_default_dict)

    print(type(test_default_dict))

    for key, value in test_default_dict.items():

        print(type(test_default_dict[key]))

if __name__ == "__main__":

    test3()

输出:

defaultdict(<class 'str'>, {})

defaultdict(<class 'str'>, {'h': 'h', 'e': 'e', 'l': 'l', 'o': 'o', '_': '_', 'd': 'd', 'f': 'f', 'a': 'a', 'u': 'u', 't': 't', 'i': 'i', 'c': 'c'})

<class 'collections.defaultdict'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

<class 'str'>

综上我们可以发现经过指定的工厂函数,defaultdict里面的value类型会变为这个指定的数据类型

三、总结

1.defaultdict可以优化普通字典访问不存在的key带来的错误,返回默认值

2.指定工厂函数后,value可以转变为相应的数据类型

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值