不区分大小写的可导出字典
项目描述
安装
您可以从PyPI安装pydicti的最新版本
pip install pydicti
或者,您可以直接取用文件pydicti.py并与您的应用程序一起重新分发。
概述
class dicti: 默认不区分大小写的字典类型
class odicti: 有序不区分大小写的字典类型
def build_dicti: 创建不区分大小写的字典类
def Dicti: 创建字典的不区分大小写副本
dicti
类型为dicti的对象是不区分大小写的字典,具有不区分大小写的项目访问功能
>>> d = dicti(Hello='foo', world='bar')
>>> d['heLLO']
'foo'
>>> 'WOrld' in d
True
然而,内部键保留其原始大小写
>>> sorted(d.keys())
['Hello', 'world']
odicti
odicti类型实例化顺序保持的不区分大小写的字典
>>> odicti(zip('abc', range(3)))
Dicti(OrderedDict([('a', 0), ('b', 1), ('c', 2)]))
build_dicti
使用build_dicti可以创建自定义的不区分大小写的字典。此函数用于创建pydicti.dicti和pydicti.odicti类型。请注意,使用相同的参数多次调用build_dicti将导致相同类型的实例
>>> build_dicti(dict) is dicti
True
>>> build_dicti(OrderedDict) is odicti
True
build_dicti使用子类化继承给定基本字典类型的语义
>>> issubclass(odicti, OrderedDict)
True
Dicti
Dicti函数方便创建字典实例的不区分大小写副本
>>> o = OrderedDict(zip('abcdefg', range(7)))
>>> oi = Dicti(o)
>>> type(oi) is odicti
True
JSON
子类化方法允许将您的字典实例插入到使用isinstance进行类型检查的地方,如json模块中
>>> import json
>>> 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 == i and i == oi
True
>>> oi != roi and roi != oi # NOT transitive!
True
>>> oi == i and i == oi # reflexive
True
Python中的强制转换规则允许在类型之间进行比较时工作得相当好,这些类型是彼此的子类。但是请注意,否则可能会有问题。
许可证
版权所有 © 2013 托马斯·格莱斯勒 <t_glaessle@gmx.de>
本作品是免费的。您可以在Sam Hocevar发布的《Do What The Fuck You Want To Public License》第2版下重新分发或修改它。有关更多详细信息,请参阅COPYING文件。
本程序是免费软件。根据适用的法律,它不提供任何保证。
变更日志
1.2.0
日期:2023年2月25日
修复了__or__和__ior__的错误行为,请参阅#8
1.2.0
日期:2022年12月15日
添加类型提示
1.1.6
日期:2021年11月4日
更新首页上的徽标
1.1.5
日期:2021年11月4日
维护版本,用于测试使用GitHub Actions自动发布的版本
1.1.4
日期:2020年10月17日
在python3中使用str.casefold()
将规范化函数作为build_dict的参数,以便传递用户定义的规范化函数
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_description中的版本号
1.0.0
日期:2019年3月19日
使字符串表示更类似于字典
其他清理
0.0.6
日期:2016年9月8日
修复在UTF-8不是默认编码时设置时的UnicodeDecodeError
0.0.5
日期:2016年5月18日
修复py 3.5上的pickling
现在build_dicti的‘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)
使nose测试自动执行doctests
项目详细信息
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。