Unique Iteration

API

Unique Iteration Utilities.

uniquer.unique(iterable, key=None)[source]

Iterate over iterable and ensure that every item is just returned once.

>>> iterator = unique([1, 3, 1, 3, 6, 3])
>>> next(iterator)
1
>>> next(iterator)
3
>>> next(iterator)
6
>>> next(iterator)
Traceback (most recent call last):
    ...
StopIteration
>>> iterator = unique([(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (3, 'a')], key=lambda item: item[1])
>>> next(iterator)
(5, 'a')
>>> next(iterator)
(2, 'b')
>>> next(iterator)
Traceback (most recent call last):
    ...
StopIteration
uniquer.uniquelist(iterable, key=None)[source]

Return unique list.

>>> uniquelist([1, 5, 2, 3, 3, 6, 7, 2, 3])
[1, 5, 2, 3, 6, 7]

The key callback allows to refine the duplicate detection:

>>> uniquelist([(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (3, 'a')])
[(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b')]
>>> uniquelist([(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (3, 'a')], key=lambda item: item[1])
[(5, 'a'), (2, 'b')]
uniquer.uniquetuple(iterable, key=None)[source]

Return unique tuple.

>>> uniquetuple([1, 5, 2, 3, 3, 6, 7, 2, 3])
(1, 5, 2, 3, 6, 7)

The key callback allows to refine the duplicate detection:

>>> uniquetuple([(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (3, 'a')])
((5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'))
>>> uniquetuple([(5, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (3, 'a')], key=lambda item: item[1])
((5, 'a'), (2, 'b'))

Indices and tables