libb.unique
- unique(iterable, key=None)[source]
Remove duplicate elements while preserving order.
Unlike more_itertools.unique, this preserves the original insertion order rather than returning elements in sorted order. Internally uses
more_itertools.unique_everseen(). Returns a list instead of a generator.- Parameters:
iterable – Iterable to deduplicate.
key – Optional function to compute uniqueness key.
- Returns:
List of unique elements.
- Return type:
Basic Usage:
>>> unique([9,0,2,1,0]) [9, 0, 2, 1]
With Key Function:
>>> unique(['Foo', 'foo', 'bar'], key=lambda s: s.lower()) ['Foo', 'bar']
Unhashable Items (use hashing keys for better performance):
>>> unique(([1, 2],[2, 3],[1, 2]), key=tuple) [[1, 2], [2, 3]] >>> unique(({1,2,3},{4,5,6},{1,2,3}), key=frozenset) [{1, 2, 3}, {4, 5, 6}] >>> unique(({'a':1,'b':2},{'a':3,'b':4},{'a':1,'b':2}), key=lambda x: frozenset(x.items())) [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]