当前位置: 首页 > news >正文

python 中easydict的简单使用

可以查看easydict官方网站:https://pypi.org/project/easydict/1.2/

easydict的作用:可以使得以属性的方式去访问字典的值!

  1. >>> from easydict import EasyDict as edict  
  2. >>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}})  
  3. >>> d.foo  
  4. 3  
  5. >>> d.bar.x  
  6. 1  
  7.   
  8. >>> d = edict(foo=3)  
  9. >>> d.foo

解析json目录时很有用

  1. >>> from easydict import EasyDict as edict  
  2. >>> from simplejson import loads  
  3. >>> j = """{ 
  4. "Buffer": 12, 
  5. "List1": [ 
  6.     {"type" : "point", "coordinates" : [100.1,54.9] }, 
  7.     {"type" : "point", "coordinates" : [109.4,65.1] }, 
  8.     {"type" : "point", "coordinates" : [115.2,80.2] }, 
  9.     {"type" : "point", "coordinates" : [150.9,97.8] } 
  10. }"""  
  11. >>> d = edict(loads(j))  
  12. >>> d.Buffer  
  13. 12  
  14. >>> d.List1[0].coordinates[1] 

也可以这样用

  1. >>> d = EasyDict()  
  2. >>> d.foo = 3  
  3. >>> d.foo  
  4. 3  
  1. >>> d = EasyDict(log=False)  
  2. >>> d.debug = True  
  3. >>> d.items()  
  4. [('debug', True), ('log', False)] 
  1. >>> class Flower(EasyDict):  
  2. ...     power = 1  
  3. ...  
  4. >>> f = Flower({'height': 12})  
  5. >>> f.power  
  6. 1  
  7. >>> f['power']  

Easydict的其他用法:

设置属性:

from easydict import EasyDict as edict

d = edict()                        # 这个是输出{}

d.foo = 3                          # 我们可以直接赋值语句对字典元素进行创建

d.bar = {'prob':'value'}      # 另外我们也可以创建字典中的字典

d.bar.prob = 'newer'        # 另外我们也可以很方便的修改字典中元素的值

print(d)

输出:

{'foo': 3, 'bar': {'prob': 'newer'}}

在深度学习中往往利用easydict建立一个全局的变量:

from easydict import EasyDict as edict

config = edict()

config.TRAIN = edict()     # 创建一个字典,key是Train,值是{}

config.Test = edict() 

# config.TRAIN = {} # 这个和上面的那句话是等价的,相当于创建一个字典的key

config.TRAIN.batch_size = 25 # 然后在里面写值,表示Train里面的value也是一个字典

config.TRAIN.early_stopping_num = 10

config.TRAIN.lr = 0.0001

print(config)

输出:

{'TRAIN': {'batch_size': 25, 'early_stopping_num': 10, 'lr': 0.0001}, 'Test': {}}

相关文章:

  • Numpy np.array 相关常用操作学习笔记
  • Matconvnet关于simplenn 转dagnn的一些小的总结
  • 海思AI芯片(Hi3519A/3559A)方案学习(一)资料以及术语介绍
  • 海思AI芯片(Hi3519A/3559A)方案学习(二)RuyiStudio安装
  • 海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
  • 海思AI芯片(Hi3519A/3559A)方案学习(四)如何在3519A板子上运行sample code
  • 海思AI芯片(Hi3519A/3559A)方案学习(五)SDK平台文档梳理
  • Atlas 200 DK 系列 -- 快速搭建开发环境
  • Atlas 200 DK 系列--初级篇--MindStudio常见操作
  • Linux/Ubuntu下解压命令
  • ubuntu终端命令的几个常用重要命令
  • 海思AI芯片(35xx):window仿真代码需修改部分
  • 在Ubuntu 16.04 安装python3.5 环境并设置为默认
  • Yolov1--v3目标检测解读
  • ubuntu16.04系统安装teamview
  • dva中组件的懒加载
  • echarts花样作死的坑
  • Java编程基础24——递归练习
  • Java小白进阶笔记(3)-初级面向对象
  • Linux快速复制或删除大量小文件
  • Ruby 2.x 源代码分析:扩展 概述
  • Spark学习笔记之相关记录
  • underscore源码剖析之整体架构
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 探索 JS 中的模块化
  • 一份游戏开发学习路线
  • 用jQuery怎么做到前后端分离
  • # Apache SeaTunnel 究竟是什么?
  • # Panda3d 碰撞检测系统介绍
  • #{}和${}的区别是什么 -- java面试
  • #14vue3生成表单并跳转到外部地址的方式
  • $ git push -u origin master 推送到远程库出错
  • ()、[]、{}、(())、[[]]命令替换
  • (1)bark-ml
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五)网络优化与超参数选择--九五小庞
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)Linux网络编程入门
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 的字符串暂存池
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET6 命令行启动及发布单个Exe文件
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • /proc/vmstat 详解
  • @我的前任是个极品 微博分析
  • [ C++ ] 继承