赞
踩
本页主要用来记录python字典的一些知识
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
- {}
工厂函数为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可以转变为相应的数据类型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。