Red/black trees in C++ for Python
Project description
Copyright (c) 2015 Will Roberts <wildwilhelm@gmail.com>
Licensed under the MIT License (see LICENSE.rst for details).
Cython interface to red-black trees implemented in C++.
Red-black trees are a kind of self-balancing binary tree. They maintain their entries in sorted order and have O(log n) for insertion, lookup, and deletion. You can read more about red-black trees and see animations of insertion, lookup, and deletion.
This package provides dictionary and set objects based on red-black-trees; these can be used as drop-in replacements for the built-in dict and set types, except that they maintain their contents in sorted order.
Dictionary (rbdict):
>>> import pyredblack
>>> d = pyredblack.rbdict(Germany = 'Berlin',
Hungary = 'Budapest',
Ireland = 'Dublin',
Portugal = 'Lisbon',
Cyprus = 'Nicosia',
Greenland = 'Nuuk',
Iceland = 'Reykjavik',
Macedonia = 'Skopje',
Bulgaria = 'Sofia',
Sweden = 'Stockholm')
>>> len(d)
10
>>> d['Ireland']
'Dublin'
>>> d.keys()
['Bulgaria', 'Cyprus', 'Germany', 'Greenland', 'Hungary',
'Iceland', 'Ireland', 'Macedonia', 'Portugal', 'Sweden']
>>> d.values()
['Sofia', 'Nicosia', 'Berlin', 'Nuuk', 'Budapest',
'Reykjavik', 'Dublin', 'Skopje', 'Lisbon', 'Stockholm']
>>> d.popitem()
('Bulgaria', 'Sofia')
>>> d.popitem()
('Cyprus', 'Nicosia')
>>> d.popitem()
('Germany', 'Berlin')
Set (rbset):
>>> fruit = pyredblack.rbset(['apple', 'orange', 'apple', 'pear',
'orange', 'banana'])
>>> 'orange' in fruit
True
>>> 'crabgrass' in fruit
False
>>> a = pyredblack.rbset('abracadabra')
>>> b = pyredblack.rbset('alacazam')
>>> list(a)
['a', 'b', 'c', 'd', 'r']
>>> list(a - b)
['b', 'd', 'r']
>>> list(a | b)
['a', 'b', 'c', 'd', 'l', 'm', 'r', 'z']
>>> list(a & b)
['a', 'c']
>>> list(a ^ b)
['b', 'd', 'l', 'm', 'r', 'z']
>>> a.pop()
'a'
>>> a.pop()
'b'
>>> a.pop()
'c'
Requirements
Python 2.7, Python 3.2+
Cython (and a C++ compiler)
Todo
implement slicing on dictionaries
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyredblack-0.1.1.tar.gz.
File metadata
- Download URL: pyredblack-0.1.1.tar.gz
- Upload date:
- Size: 88.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4b67ca1e62d783a862bef1c594dcda088d1f309a762d5408a803c8f70c3603
|
|
| MD5 |
9bd4e6e92252caa542db7d372009060a
|
|
| BLAKE2b-256 |
e19e6779fafd66df75cf5b1881929db7626f09717fb4900a7a5aeb200b134b34
|
File details
Details for the file pyredblack-0.1.1-cp35-cp35m-macosx_10_11_x86_64.whl.
File metadata
- Download URL: pyredblack-0.1.1-cp35-cp35m-macosx_10_11_x86_64.whl
- Upload date:
- Size: 83.6 kB
- Tags: CPython 3.5m, macOS 10.11+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1935966d13b91c1fc9ebdb434bc2d4c66f6ac3b4e4d74d4eb80e20c7b17118a
|
|
| MD5 |
0e57ae90fa99a54eb0686acea9dfcc0e
|
|
| BLAKE2b-256 |
85ea4b43a2869cf41ed529e96e524828a26d13f1b85a11690e1c73c259779723
|
File details
Details for the file pyredblack-0.1.1-cp34-cp34m-macosx_10_11_x86_64.whl.
File metadata
- Download URL: pyredblack-0.1.1-cp34-cp34m-macosx_10_11_x86_64.whl
- Upload date:
- Size: 83.8 kB
- Tags: CPython 3.4m, macOS 10.11+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a4ff3b951b0872d01ce2d05943a60a311e063e38d81d0699a6475eadf2a316b
|
|
| MD5 |
3e8326054d2c85c2547d235a261cfb31
|
|
| BLAKE2b-256 |
d8c7e2ad5b3bd972455720b499fbea534e3fbb779d7ab9560801fda91cadbda0
|
File details
Details for the file pyredblack-0.1.1-cp27-none-macosx_10_11_x86_64.whl.
File metadata
- Download URL: pyredblack-0.1.1-cp27-none-macosx_10_11_x86_64.whl
- Upload date:
- Size: 84.0 kB
- Tags: CPython 2.7, macOS 10.11+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
141040cbb8d06f0737b9fa9766064099688adb8e09bb7bb3fd8af2865eb2e613
|
|
| MD5 |
fabfe66b7ba44991788886157669ccf8
|
|
| BLAKE2b-256 |
379481032a0f9efce24ab7c30a40255ce0fec055f22c454b640d7c60d469db1f
|