高性能自增加的插图。
automap的Python项目详细描述
自动映射
automap
是一个Python包,包含高性能的自增整数值映射。在
要安装,只需运行pip install automap
。在
示例
automap
对象有点像“逆序列”。它们有两种变体:
冻结自动映射
>>>fromautomapimportFrozenAutoMap
FrozenAutoMap
对象是不可变的。它们可以由任何可散列的、唯一的键组成。在
这些值是整数,根据原始键的顺序递增:
>>>a["A"]0>>>a["C"]2>>>a["X"]Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>KeyError:'X'
提供完整的Mapping
接口:
>>>[*a.keys()]['A','B','C']>>>[*a.values()][0,1,2]>>>[*a.items()][('A',0),('B',1),('C',2)]>>>a.get("X",42)42>>>"B"inaTrue>>>[*a]['A','B','C']
它们也可以使用|
运算符相互组合:
>>>b=FrozenAutoMap(range(5))>>>c=FrozenAutoMap(range(5,10))>>>b|cautomap.FrozenAutoMap([0,1,2,3,4,5,6,7,8,9])>>>b|=c# Note that b is reassigned, not mutated!>>>bautomap.FrozenAutoMap([0,1,2,3,4,5,6,7,8,9])
自动映射
>>>fromautomapimportAutoMap
与FrozenAutoMap
对象不同,AutoMap
对象可以增长;新的键可以是
已添加,但现有的不能删除或更改。在
>>>d=AutoMap("ABC")>>>dautomap.AutoMap(['A','B','C'])>>>d|="DEF"# Here, d *is* mutated!>>>dautomap.AutoMap(['A','B','C','D','E','F'])
它们还有add
和update
方法来添加新密钥:
>>>e=AutoMap(["I","II","III"])>>>e.add("IV")>>>eautomap.AutoMap(['I','II','III','IV'])>>>e.update(["V","VI","VII"])>>>eautomap.AutoMap(['I','II','III','IV','V','VI','VII'])
性能
测试显示字符串键控的AutoMap
对象的创建和访问速度提高了75%
比等效的dict
结构快10%。他们倾向于接受
平均而言,内存量相同。您可以从此运行invoke performance
存储库以查看计算机上的比较。在
关于设计的更多细节可以在automap.c
中找到。在
- 项目
标签: