===== Get unique items in a list ===== ==== Task ==== Given mylist = ['nowplaying', 'PBS', 'PBS', 'nowplaying', 'job', 'debate', 'thenandnow'] get the list of unique items. The output can be one of three ways: - Order does not matter. ['thenandnow', 'debate', 'nowplaying', 'PBS', 'job'] - Preserve the order and keep the first unique item. ['nowplaying', 'PBS', 'job', 'debate', 'thenandnow'] - Preserve the order and keep the last unique item. ['PBS', 'nowplaying', 'job', 'debate', 'thenandnow'] ==== Notes and assumptions ==== * Starting from Python 3.7, dictionaries in python are ordered by insertion order. Per https://docs.python.org/3.7/tutorial/datastructures.html#dictionaries Performing list(d) on a dictionary returns a list of all the keys used in the dictionary, in insertion order * Assume Python >= 3.7 is used. ==== Case 1: unique unordered ==== uniq_no_order = list(set(mylist)) print(uniq_no_order) ['nowplaying', 'job', 'debate', 'PBS', 'thenandnow'] ==== Case 2: keep first unique ==== uniq_first = list({key:1 for key in mylist}.keys()) print(uniq_first) ['nowplaying', 'PBS', 'job', 'debate', 'thenandnow'] ==== Case 3: keep last unique ==== uniq_last = list({key:1 for key in mylist[::-1]}.keys())[::-1] print(uniq_last) ['PBS', 'nowplaying', 'job', 'debate', 'thenandnow']