diff --git a/lisa/utils.py b/lisa/utils.py index 232822ebffe8e46c08f7bd3248558042bcf53c1b..c2d118ce8df1aedd5dd8ed1bd24985441a9ce57f 100644 --- a/lisa/utils.py +++ b/lisa/utils.py @@ -858,13 +858,17 @@ def deduplicate(seq, keep_last=True, key=lambda x: x): items. Otherwise, keep the first occurence. :type keep_last: bool """ - reorder = (lambda seq: seq) if keep_last else reversed - # Use an OrderedDict to keep original ordering of the sequence - dedup = OrderedDict( - (key(x), x) - for x in reorder(seq) - ) - return list(reorder(dedup.values())) + reorder = reversed if keep_last else (lambda seq: seq) + + out = [] + visited = set() + for x in reorder(seq): + k = key(x) + if k not in visited: + out.append(x) + visited.add(k) + + return list(reorder(out)) def take(n, iterable):