A pure Python implementation of a PATRICIA trie.
Project description
A pure Python 2.7+ implementation of a PATRICIA trie for effcient matching of string collections on text.
Note that you probably first want to have a look at marisa-trie or its PyPi package before using this.
patricia-trie has a clean API that imitates the dict() API and works with Py3k.
Installation
pip install patricia-trie
Usage
>>> from patricia import trie >>> T = trie(1, key='value', king='kong') # a root value and two pairs >>> '' in T # check if the value exits (note: the [empty] root is '') True >>> 'kong' in T False >>> T['king'] # get the value for an exact key 'kong' >>> T['kong'] # error from non-existing keys Traceback (most recent call last): ... KeyError: 'kong' >>> len(T) # count keys ("terminals") in the tree 3 >>> sorted(T.keys()) # "traditional stuff": keys(), values(), and items() ['', 'key', 'king'] >>> # scanning a text S with key(S), value(S), and item(S): >>> S = 'keys and kewl stuff' >>> T.key(S) # report the (longest) key that is a prefix of S 'key' >>> T.value(S[1:]) # remember: the empty root always matches! 1 >>> del T[''] # interlude: deleting keys >>> T.item(S[9:]) # raise error if no key is a prefix of S Traceback (most recent call last): ... KeyError: 'k' >>> # info: the error string above contains the matched path so far >>> T.item(S[1:], None) # avoid the error by specifying a default >>> # iterate all matching content with keys(S), values(S), and items(S): >>> list(T.items(S)) [('key', 'value')]
Note that deletion is a “half-supported” operation only. The key seems “removed”, but the trie is not actually changed, only the node state is changed from terminal to non-terminal. I.e., if you frequently delete keys, the compaction will become fragmented and less efficient. To mitigate this effect, make a copy of the trie (using a copy constructor idiom):
T = trie(**T)
Copyright
Copyright 2013, Florian Leitner, All rights reserved.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file patricia-trie-1.tar.gz
.
File metadata
- Download URL: patricia-trie-1.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03dca2b4391ec3f0487da0af0f1459f9a69ed351a6ff6e84fb2a890665af86fa |
|
MD5 | 765584d56bc2ff1dd0ddcc6db80590ef |
|
BLAKE2b-256 | f9ddf7634eb4a26c3203556e0a130711dcaccccfac7e33abfe955a66a1b51c05 |