Welcome to dict.sorted — dict.sorted 1.0.0 documentation

### Navigation

- index
- dict.sorted 1.0.0 documentation »

# Welcome to dict.sorted

This is dict.sorted, which provides subclasses to Python’s built-in dictionary which order its keys.

It provides two such subclasses: one for arbitrary sorting based on a method you provide, and one for sorting in alphabetical order.

## Python Support

dict.sorted is compatible with Python 2.6, Python 2.7, and Python 3.3 or later.

It makes use of six to provide compatibility with Python 2 and Python 3, and therefore requires six as a dependency.

Note

All output shown in the examples below is generated on Python 3.3. Python 2 output will look slightly different (in particular, the unicode keys will have the leading `u` character).

## Getting Help

If you think you’ve found a bug in dict.sorted itself, please post an issue on the Issue Tracker.

For usage help, you’re free to e-mail the author, who will provide help (on a best effort basis) if possible.

## AlphaSortedDict

`AlphaSortedDict` is a dictionary subclass that generally behaves exactly like a dictionary, but will always render and iterate over its keys in alphabetical order, rather than arbitrary order of the built-in `dict` type.

The `AlphaSortedDict` constructor accepts a dictionary, any iterable that can coerce to a dictionary (e.g. a tuple of two-tuples), or keyword arguments:

    >>> from sdict import AlphaSortedDict
    >>> d = AlphaSortedDict({ 'x': 1 })
    >>> d['a'] = 2
    >>> d
    {'a': 2, 'x': 1}

The `AlphaSortedDict` class is also aliased to `adict` on the same module, for shorter invocation. This example is identical to the one above:

    >>> from sdict import adict
    >>> d = adict({ 'x': 1 })
    >>> d['a'] = 2
    >>> d
    {'a': 2, 'x': 1}

Keyword arguments are also acceptable:

    >>> from sdict import adict
    >>> d = adict(x=1, a=2)
    >>> d
    {'a': 2, 'x': 1}

Note

Because `AlphaSortedDict` sorts its keys in alphabetical order, it will coerce all keys to text (`str` in Python 3, `unicode` in Python 2) upon insertion into the dictionary.

## SortedDict

`SortedDict` is a dictionary subclass that behaves like a dictionary, except that keys are sorted based on a function you provide.

The `SortedDict` constructor requires, as its first positional argument, a function, which accepts one argument and returns back a value used for ordering (any value that properly answers to comparison operators is fine).

Here is an example of a dictionary that will yield keys in reverse-alphabetical order:

    >>> from sdict import SortedDict
    >>> import six
    >>> cmp_func = lambda x: [-ord(i) for i in six.text_type(x)]
    >>> d = SortedDict(cmp_func, { 'a': 5, 'b': 10 })
    >>> d
    {'b': 10, 'a': 5}

The `SortedDict` class is aliased to `sdict` on the same module, for shorter invocation.

Note that you are responsible for having a comparison function robust enough to accept and know what to do with any key value that you send.

## Running the Tests

To run the tests, clone the package from GitHub and invoke `python test.py`. To run the tests against every supported Python version, assuming you have the appropriate Python binaries on your machine, first install and then run `tox`.

## License

New BSD.

### Navigation

- index
- dict.sorted 1.0.0 documentation »