日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

easydict库的用法以及改进型Easydict

發布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 easydict库的用法以及改进型Easydict 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)、在python中使用字典可以很方便的查看屬性,但是字典遍歷的方法不是那么方便,因此python提供了快速遍歷字典的方法。

dict1 = {'num1':1,'num2':2} print(dict1['num1']) #以上為普通的字典的遍歷方法,這種遍歷在應用的時候不是很方便,查找屬性必須按照列表的方法進行查找 from easydict import EasyDict as edict dict1 = {'num1':1,'num2':2} dict2 = edict(dict1) #dict2就可以按照方式dict2.num1進行訪問

(2)以下用法:

from easydict import EasyDict as edict#注意,這里的mn和cfg的值永遠都是一樣的!!!!!!!!! #不管用哪個的值增加,另外一個都會變!!!!!! mn = edict() cfg = mnmn.TRAIN = edict() mn.TRAIN.LEARNING_RATE = 0.001 mn.TRAIN.MOMENTUM = 0.9 mn.TRAIN.GAMMA = 0.1 mn.TRAIN.STEPSIZE = 50000 mn.TRAIN.DISPLAY = 10 mn.IS_MULTISCALE = Falseprint(mn) print(cfg) print(cfg.TRAIN) print(cfg.TRAIN.DISPLAY) print(mn.TRAIN.MOMENTUM)

(3)改進型Easydict

class EasyDict(dict):"""Get attributes>>> d = EasyDict({'foo':3})>>> d['foo']3>>> d.foo3>>> d.barTraceback (most recent call last):...AttributeError: 'EasyDict' object has no attribute 'bar'Works recursively>>> d = EasyDict({'foo':3, 'bar':{'x':1, 'y':2}})>>> isinstance(d.bar, dict)True>>> d.bar.x1Bullet-proof>>> EasyDict({}){}>>> EasyDict(d={}){}>>> EasyDict(None){}>>> d = {'a': 1}>>> EasyDict(**d){'a': 1}Set attributes>>> d = EasyDict()>>> d.foo = 3>>> d.foo3>>> d.bar = {'prop': 'value'}>>> d.bar.prop'value'>>> d{'foo': 3, 'bar': {'prop': 'value'}}>>> d.bar.prop = 'newer'>>> d.bar.prop'newer'Values extraction>>> d = EasyDict({'foo':0, 'bar':[{'x':1, 'y':2}, {'x':3, 'y':4}]})>>> isinstance(d.bar, list)True>>> from operator import attrgetter>>> map(attrgetter('x'), d.bar)[1, 3]>>> map(attrgetter('y'), d.bar)[2, 4]>>> d = EasyDict()>>> d.keys()[]>>> d = EasyDict(foo=3, bar=dict(x=1, y=2))>>> d.foo3>>> d.bar.x1Still like a dict though>>> o = EasyDict({'clean':True})>>> o.items()[('clean', True)]And like a class>>> class Flower(EasyDict):... power = 1...>>> f = Flower()>>> f.power1>>> f = Flower({'height': 12})>>> f.height12>>> f['power']1>>> sorted(f.keys())['height', 'power']"""def __init__(self, d=None, **kwargs):if d is None:d = {}if kwargs:d.update(**kwargs)for k, v in d.items():setattr(self, k, v)# Class attributesfor k in self.__class__.__dict__.keys():if not (k.startswith('__') and k.endswith('__')):setattr(self, k, getattr(self, k))def __setattr__(self, name, value):if isinstance(value, (list, tuple)):def get_EasyDict_list(value):return [EasyDict(x) if isinstance(x, dict) else x if not isinstance(x, (list, tuple)) else get_EasyDict_list(x) for x in value]value = get_EasyDict_list(value)else:value = EasyDict(value) if isinstance(value, dict) else valuesuper(EasyDict, self).__setattr__(name, value)self[name] = valuedef __getattr__(self, name):"""如果 key 不存在返回 None"""try:return super(EasyDict, self).__getattr__(name)except AttributeError:try:return self[name]except KeyError:key = name or ""if key.startswith('__') and key.endswith('__'):raise AttributeErrorreturn None

總結

以上是生活随笔為你收集整理的easydict库的用法以及改进型Easydict的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。