23 lines
610 B
Python
23 lines
610 B
Python
from itertools import (groupby)
|
|
|
|
|
|
# nubByKey :: (a -> b) -> [a] -> [a]
|
|
def nubByKey(k, xs):
|
|
return list(list(v)[0] for _, v in groupby(sorted(xs, key=k), key=k))
|
|
|
|
|
|
xs = [
|
|
'apple', 'apple',
|
|
'ampersand', 'aPPLE', 'Apple',
|
|
'orange', 'ORANGE', 'Orange', 'orange', 'apple'
|
|
]
|
|
for k in [
|
|
id, # default case sensitive uniqueness
|
|
lambda x: x.lower(), # case-insensitive uniqueness
|
|
lambda x: x[0], # unique first character (case-sensitive)
|
|
lambda x: x[0].lower(), # unique first character (case-insensitive)
|
|
]:
|
|
print (
|
|
nubByKey(k, xs)
|
|
)
|