不区分大小写可导字典
pydicti的Python项目详细描述
概述
- class dicti:默认不区分大小写字典类型
- class odicti:不区分大小写的有序字典类型
- def build_dicti:创建一个不区分大小写的字典类
- def Dicti:创建字典的不区分大小写副本
迪克
类型为dicti的对象是不区分大小写的字典 项目访问:
>>>d=dicti(Hello='foo',world='bar')>>>d['heLLO']'foo'>>>'WOrld'indTrue
但在内部,这些键保留原来的大小写:
>>>sorted(d.keys())['Hello','world']
奥迪克蒂
类型odicti实例化保留顺序的不区分大小写 词典:
>>>odicti(zip('abc',range(3)))Dicti(OrderedDict([('a',0),('b',1),('c',2)]))
构建
使用build_dicti可以创建自定义的不区分大小写词典。 此函数用于创建pydicti.dicti和 pydicti.odicti类型。注意,多次调用build_dicti。 使用相同的参数将导致相同的类型:
>>>build_dicti(dict)isdictiTrue>>>build_dicti(OrderedDict)isodictiTrue
build_dicti使用子类继承给定基的语义 词典类型:
>>>issubclass(odicti,OrderedDict)True
迪克
函数Dicti便于创建不区分大小写 字典实例的副本:
>>>o=OrderedDict(zip('abcdefg',range(7)))>>>oi=Dicti(o)>>>type(oi)isodictiTrue
json
子类化方法允许将字典实例插入 使用isinstance进行类型检查的位置,如json 模块:
>>>importjson>>>d==json.loads(json.dumps(d),object_hook=dicti)True
您可以使用json.loads(s, object_pairs_hook=odicti)来 反序列化排序字典。
陷阱
相等比较尝试保留基类型的语义为 良好的自反性。这对 比较运算符:
>>>i=dicti(oi)>>>roi=odicti(reversed(list(oi.items())))>>>roi==iandi==oiTrue>>>oi!=roiandroi!=oi# NOT transitive!True>>>oi==iandi==oi# reflexiveTrue
python中的coercion rules允许在 在互为子类的类型之间执行比较。成为 不过,要小心。
许可证
版权所有©2013 Thomas Gl_le<;t_glaessle@gmx.de>;
这项工作是免费的。您可以在 “做你想做的事”的条款,第二版,作为 由Sam Hocevar出版。有关详细信息,请参见复制文件。
这个程序是免费软件。它没有任何保证 适用法律允许的范围。
更改日志
1.1.3
日期:2019年6月28日
- 避免在__setitem__ 中重新计算密钥
1.1.2
日期:2019年6月28日
- 在odicti(2)中保持赋值项顺序不变
- 在赋值下保持密钥大小写不变
1.1.1
日期:2019年3月25日
- 修复不推荐的mutablemapping导入(py38上的错误)
1.1.0
日期:2019年3月19日
- 放弃PY2.6支持
- 修复long_描述中的版本号
1.0.0
日期:2019年3月19日
- 使str表示更像dict
- 杂项清理
0.0.6
日期:2016年9月8日
- 当utf-8不是默认编码时,修复安装程序中的unicodedecodeerror
0.0.5
日期:2016年5月18日
- 将酸洗固定在PY 3.5上
- “name”参数现在可以是一个qualname
0.0.4
日期:2014年2月1日
- 添加覆盖率报告
- 使用更广泛的单元测试
- 添加对pickle的支持
0.0.3
日期:2014年1月26日
- 添加对python26的支持
- 使对OrderedDict的依赖成为可选的
- 迁移到setuptools以使用测试命令
- 支持ordereddict.OrderedDict作为回退
0.0.2
日期:2013年12月29日
- 修复dicti.pop
- 支持deepcopy(dicti)
- 使nosetest自动执行doctests