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()也可以实现相同的功能。

posted @   海_纳百川  阅读(952)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-09-12 YOLOv5中的CSP结构
2022-09-12 python内置函数eval的用法和错误封装
2022-09-12 python 中的%S用法
2022-09-12 pycharm返回上一次光标位置
2022-09-12 python 函数参数引用之传值/传址和copy/deepcopy
2022-09-12 python多个等于号的表达式 a=b=c=d...=X
2022-09-12 python中Path详细用法
本站总访问量8968256
 
点击右上角即可分享
微信分享提示