属性-访问有序字典

atdict的Python项目详细描述


PyPI versionDOIBuild Statuscodecov

自动听写

属性访问顺序字典


atdict是一个属性访问顺序字典。你可以用钥匙 名称作为访问键的字典值的属性, 例如,o.key_name而不是o['key_name']。只有最低限度 实现了一组方法,以尽量减少命名的机会 冲突。

atdict最初作为类在2017年开发 ^{}, 在scribblers中,其中 在中表示event objectsalphatwirl。是的 2019年作为独立软件包发布,名为atdict



要求

  • python 2.7、3.6或3.7

安装

您可以使用pip安装。

$ pip install -U atdict

如何使用

导入atdict

从包中导入atdict

fromatdictimportatdict

初始化atdict

可以使用任何可以初始化的参数初始化atdict^{}

例如:

o1=atdict([('foo',40),('bar','ham')])print(o1)

它会打印出来。

atdict(foo=40,bar='ham')

一个atdict也可以用另一个atdict初始化。

o2 = atdict(o1)
print(o2)

使用o1内容的(浅层)副本初始化o2

atdict(foo=40, bar='ham')

访问值

您可以使用密钥名作为atdict的属性。

print(o1.foo)

这将打印键foo的值,即40

40

修改值

若要修改值,可以为该属性指定新值。

o1.foo=50print(o1)
atdict(foo=50, bar='ham')

foo的值从40更改为50

添加一个键

若要添加键,还可以为该属性指定值

o1.baz='eggs'print(o1)
atdict(foo=50, bar='ham', baz='eggs')

删除键

del删除密钥。

delo1.barprint(o1)
atdict(foo=50, baz='eggs')

复制和深度复制

如果atdict使用另一个 atdict。但是,这将是一个shallow副本。

l=[1,2]o1=atdict([('foo',l)])o2=atdict(o1)print(o2.fooiso1.foo)
True

要制作deep副本,可以使用copy.deepcopy()

importcopyl=[1,2]o1=atdict([('foo',l)])o2=copy.deepcopy(o1)print(o2)
atdict(foo=[1, 2])

o2.fooo1.foo不是同一个对象。

print(o2.fooiso1.foo)
False

腌菜

只要所有值都是可选取的,atdict就是可选取的。

importpickleo1=atdict([('foo',40),('bar','ham')])p1=pickle.dumps(o1)o2=pickle.loads(p1)print(o2)
atdict(foo=40, bar='ham')

许可证

  • atdict是根据bsd许可证授权的。

联系人

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配