Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from types import GeneratorType
- def remove_duplicates(iterable, key=None):
- iterable_class = type(iterable)
- if iterable_class in [dict, set]:
- raise TypeError("You can't remove duplicates from a {}!".format(iterable_class))
- if not key:
- _key = lambda a: a
- elif not callable(key):
- _key = lambda a: a[key]
- else:
- _key = key
- s = set()
- gen = (s.add(_key(i)) or i for i in iterable if _key(i) not in s)
- if iterable_class == str:
- return ''.join(gen)
- elif iterable_class == GeneratorType:
- return list(gen)
- return iterable_class(gen)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement