python中defaultdict 的用法
注意 defaultdict接收的是一个函数,而非固定值,比如defaultdict(list)而非defaultdict([])
创建一个具有空张量作为默认值的defaultdict
,可以这样做:
from collections import defaultdict import torch # 创建一个defaultdict,其中默认值是一个空张量 a = defaultdict(lambda: torch.tensor([])) # 添加一些示例数据 a['key1'] = torch.tensor([1, 2, 3]) a['key2'] = torch.tensor([4, 5, 6]) # 访问一个不存在的键,将返回空张量作为默认值 default_value = a['key3'] # default_value将是一个空张量
defaultdict:
当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错,如:
这时defaultdict就能排上用场了,defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个默认值是什么呢,下面会说
如何使用defaultdict
defaultdict接受一个工厂函数作为参数,如下来构造:
from collections import
dict =defaultdict( factory_function)
这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0,如下举例:
from collections import defaultdict s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] d = defaultdict(list) for k, v in s: d[k].append(v) a = d.items() print(a) b = sorted(d.items()) print(b) """ 结果: dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])]) [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])] """
当字典中没有的键第一次出现时,default_factory自动为其返回一个空列表,list.append()会将值添加进新列表;再次遇到相同的键时,list.append()将其它值再添加进该列表。
这种方法比使用dict.setdefault()更为便捷,dict.setdefault()也可以实现相同的功能。
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/17118180.html,如有侵权联系删除