python 中的 easydict
或
import time
dir(time)
easydict的作用:可以使得以属性的方式去访问字典的值!
>>> from easydict import EasyDict as edict >>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}}) >>> d.foo 3 >>> d.bar.x 1 >>> d = edict(foo=3) >>> d.foo 3
解析json目录时很有
>>> from easydict import EasyDict as edict >>> from simplejson import loads >>> j = """{ "Buffer": 12, "List1": [ {"type" : "point", "coordinates" : [100.1,54.9] }, {"type" : "point", "coordinates" : [109.4,65.1] }, {"type" : "point", "coordinates" : [115.2,80.2] }, {"type" : "point", "coordinates" : [150.9,97.8] } ] }""" >>> d = edict(loads(j)) >>> d.Buffer 12 >>> d.List1[0].coordinates[1] 54.9
>>> d = EasyDict() >>> d.foo = 3 >>> d.foo 3 >>> d = EasyDict(log=False) >>> d.debug = True >>> d.items() [('debug', True), ('log', False)] >>> class Flower(EasyDict): ... power = 1 ... >>> f = Flower({'height': 12}) >>> f.power 1 >>> f['power'] 1
EasyDict可以让你像访问属性一样访问dict里的变量。
1. 问题
d = {'foo':3, 'bar':{'x':1, 'y':2}}
print(d['foo']) # 如何想要访问字典的元素需要这么写
print(d['bar']['y']) # 如果想要继续访问字典中字典的元素需要使用二维数组
# print(d.foo) 这样写会出错哦!
输出:
3
2
但是感觉这样太麻烦了,有没有更简单的方法使用字典了?
2. 解决方法
我们可以使用easydict模块!
from easydict import EasyDict as edict
easy = edict(d = {'foo':3, 'bar':{'x':1, 'y':2}}) # 将普通的字典传入到edict()
print(easy['foo']) # 这是传统的方法
print(easy.foo) # 这是我们使用easydict输出二者结果是一样的,但是可以更为方便的使用字典了
print(easy.bar.x) # 我们也是可以很方便的使用字典中字典的元素了
输出:
3
3
1
3. Easydict的其他用法
3. 1.设置属性
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'}}
1
3.2 在深度学习中往往利用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': {}}
1
参考文章
---------------------
作者:alxe_made
来源:CSDN
原文:https://blog.csdn.net/alxe_made/article/details/80507415
版权声明:本文为博主原创文章,转载请附上博文链接!
python 中的 easydict的更多相关文章
- [转]Python中的str与unicode处理方法
早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...
- python中的Ellipsis
...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...
- python中的默认参数
https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
- python中的TypeError错误解决办法
新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...
- python中的迭代、生成器等等
本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...
- python2.7高级编程 笔记二(Python中的描述符)
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...
- python cookbook 学习系列(一) python中的装饰器
简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓 ...
- 用 ElementTree 在 Python 中解析 XML
用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...
随机推荐
- OneNET麒麟座应用开发之六:与气体质量流量控制器通讯
气体质量流量控制器,简称MFC,通常用于在各种检测中,计量气体的流量.在我们的大气环境数据采集站中,要让气流保持稳定,这样才能准确的获取PM25的数据. 我们采用的气体质量流量控制器具备串口通讯功能, ...
- Java 开发环境配置--eclipse工具进行java开发
Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java Cloud Studio ...
- hdu4768二分答案
/* 如果发的传单是偶数,那么所有人都收到双数张. 仅考虑发了单数张传单,二分答案x,如果x左边是偶数,那么答案在右侧,如果x左边是奇数,那么答案在左侧 */ #include<iostream ...
- poj2464扫描线好题,回头再做
扫描线+区间更新 题解 /* st[i],ol[i]表示y坐标大于y[i]和小于y[i]的点 两颗线段树建立在y轴上,区间[l,r]ol线选在[l,r]时st的分数 每次查询完成后再更新一次 遍历每条 ...
- js中常见的数组排序算法-冒泡排序和选择排序
reverse( ) 数组逆序 // reverse() 数组逆序 var arr = ["边境牧羊犬", "德国牧羊犬", "金毛" ...
- [JSOI2009]等差数列
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1558 题解: 考虑这么用线段树进行维护,由于他有区间修改等差数列 很容易想到可以用差分数组来维 ...
- 使用yum时报错 This system is not registered to Red Hat Subscription Management
错误原因:使用redhat的yum源是需要注册付费的. 1.卸载RedHat自带的yum包 查看已安装的yum rpm -qa|grep yum #卸载已安装的yum rpm -qa | grep y ...
- Digital biquad filter
Direct Form 1 The most straightforward implementation is the Direct Form 1, which has the following ...
- HDU1575-Tr 【矩阵快速幂】(模板题)
<题目链接> 题目大意: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第 ...
- cmake使用笔记
目录 cmake使用笔记 基本使用方法 相较于makefile的优点 常用语法 cmake_minimum_required project PROJECT_SOURCE_DIR set includ ...