orderedset

Module description

This module provide a pure python OrderedSet data type implementation. inspired by http://code.activestate.com/recipes/576694/

Ordered set is a set that remembers original insertion order. Also support add item, remove item, iterate, union, intersect, difference, classic set operations.

Note: this is not a high performance implementation, don’t use this for big data and product environment. But there’s are better one:

orderedset: a Cython implementation. https://pypi.python.org/pypi/orderedset

Usage examples

Add, discard, pop:

>>> s = OrderedSet()
>>> s.add(1)
>>> s.add(2)
>>> s.add(3)
>>> s
OrderedSet([1, 2, 3])

>>> s.discard(2)
>>> s
OrderedSet([1, 3])

>>> s.pop()
3
>>> s
OrderedSet([1])

Union, intersect, difference:

>>> s = OrderedSet("abracadaba") # {"a", "b", "r", "c", "d"}
>>> t = OrderedSet("simcsalabim") # {"s", "i", "m", "c", "a", "l", "b"}
>>> s | t # s union t
OrderedSet(['a', 'b', 'r', 'c', 'd', 's', 'i', 'm', 'l'])

>>> s & t # s intersect t
OrderedSet(['c', 'a', 'b'])

>>> s - t # s different t
OrderedSet(['r', 'd'])

About

Compatibility

  • Python2: Yes
  • Python3: Yes

Prerequisites

  • None

class, method, func, exception

class ctmatching.orderedset.OrderedSet(iterable=None)[source]

A light weight OrderedSet data type pure Python implementation.

add(key)[source]

Add an item to the OrderedSet.

Usage:

>>> s = OrderedSet()
>>> s.add(1)
>>> s.add(2)
>>> s.add(3)
>>> s
OrderedSet([1, 2, 3])

中文文档

添加一个元素, 如果该元素已经存在, 则不会有任何作用。

discard(key)[source]

Remove a item from its member if it is a member.

Usage:

>>> s = OrderedSet([1, 2, 3])
>>> s.discard(2)
>>> s
OrderedSet([1, 3])

中文文档

从有序集合中删除一个元素, 同时保持集合依然有序。

pop(last=True)[source]

Remove and returns the last added item.

Usage:

>>> s = OrderedSet([1, 2, 3])
>>> s.pop()
3
>>> s
OrderedSet([1, 2])

中文文档

移除并返回最后添加的元素。

static union(*argv)[source]

Returns union of sets as a new set. basically it’s Items are ordered by set1, set2, ...

中文文档

求多个有序集合的并集, 按照第一个集合, 第二个, ..., 这样的顺序。

static intersection(*argv)[source]

Returns the intersection of multiple sets. Items are ordered by set1, set2, ...

中文文档

求多个有序集合的交集, 按照第一个集合, 第二个, ..., 这样的顺序。

ctmatching.orderedset.test_add_pop_and_discard()[source]

test, add(item), pop(last=True/False), discard(item) method

ctmatching.orderedset.test_union_intersect_and_difference()[source]

test union, intersect, difference operation

ctmatching.orderedset.test_staticmethod()[source]

test customized batch union and intersect static method