Python dictionary (1) - learning of defaultdict

I. Introduction

This page is mainly used to record some knowledge of python dictionaries

2. Detailed explanation of defaultdict in Python

2.1 The default value returned by defaultdict

Defaultdict, as the name implies, is the default dictionary. This dictionary is a subset of ordinary dictionaries and is an improvement on ordinary dictionaries.

Use of dcit :

When accessing a key that does not exist in the dictionary, an error will be reported

The use of defaultdict :

When accessing a key that does not exist in the dictionary, the default value will be returned

In fact, defaultdict can also return other default values. Defaultdict generally accepts a factory function as a parameter, and different parameters return different default values.

语法:dict =defaultdict( factory_function)

Among them, factory_function can be set, list, str, int, dict, etc., when accessing a key that does not exist

defaultdict(set) returns set()

defaultdict(list) returns []

defaultdict(str) returns an empty string

defaultdict(int) returns 0

defaultdict(dict) returns dict

Example:

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

get:

set()
[]

0
{}

2.2. The use of defaultdict

The factory function is 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 ()

output:

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可以转变为相应的数据类型

Guess you like

Origin blog.csdn.net/SL1029_/article/details/130655443