Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Oct 13, 2024. It is now read-only.

minghu6/ordered-set

Repository files navigation

An OrderedSet is a custom MutableSet that remembers its order, so that every entry has an index that can be looked up.

Based on a recipe originally posted to ActiveState Recipes by Raymond Hettiger, and released under the MIT license:

http://code.activestate.com/recipes/576694-orderedset/

Rob Speer's changes are as follows:

  • changed the content from a doubly-linked list to a regular Python list. Seriously, who wants O(1) deletes but O(N) lookups by index?
  • add() returns the index of the added item
  • index() just returns the index of an item
  • added a __getstate__ and __setstate__ so it can be pickled
  • added __getitem__
  • __getitem__ and index() can be passed lists or arrays, looking up all the elements in them to perform NumPy-like "fancy indexing"

minghu6's changes are as follow:

  • restrict the OrderedSet operation object: only themselves. Because OrderededSet's element consists of its index and value, Python set's element only consists of its value, however. I have written a new class OrderedSetAdapter to adapt Python set.
  • writtern a new class OrderedSetAdapter
  • rewrittern some contradictory method from collections.MutableSet

Tested on Python 2.7, 3.3, 3.4, 3.5, 3.6, PyPy, and PyPy3.

About

A MutableSet that remembers its order, so that every entry has an index

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Packages

Contributors

Languages

  • Python 100.0%