![]() |
Sort last - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Homework (https://python-forum.io/forum-9.html) +--- Thread: Sort last (/thread-26510.html) |
Sort last - pyzyx3qwerty - May-04-2020 I have been taking a class, so this must count as homework. So thing is given a list of non-empty tuples, return a list sorted in increasing order by the last element in each tuple. e.g. [(1, 7), (1, 3), (3, 4, 5), (2, 2)] yields [(2, 2), (1, 3), (3, 4, 5), (1, 7)] Hint: use a custom key= function to extract the last element form each tuple. Here's my go : def sort_last(tuples): for t in tuples : last_element = t[-1] return sorted(tuples, key = last)Unfortunately, this is all i have been able to do. I don't know how can I sort the list on the basis of its last element in ascending order. Any help would be appreciated RE: Sort last - anbu23 - May-04-2020 >>> tup=[(1, 7), (1, 3), (3, 4, 5), (2, 2)] >>> sorted(tup, key=lambda x:x[-1]) [(2, 2), (1, 3), (3, 4, 5), (1, 7)] >>> RE: Sort last - DeaD_EyE - May-04-2020 You can use the itemgetter. from operator import itemgetter tup = [(1, 7), (1, 3), (3, 4, 5), (2, 2)] sorted(tup, key=itemgetter(-1))The itemgetter could also used to access keys in a dict: data = [{"x": 10, "y": 42},{"x": 20, "y": 44},{"x": 13, "y": -1}] # sort by x sorted(d, key=itemgetter("x")) # sort by x and then y sorted(d, key=itemgetter("x", "y")) # sort by y and then x sorted(d, key=itemgetter("y", "x"))How it works: my_itemgetter = itemgetter(1) # the itemgetter returns a callable, which takes the sequence as input my_itemgetter([1,2,3]) If you call it in one line, it looks a bit strange:itemgetter(1)([1,2,3]) RE: Sort last - pyzyx3qwerty - May-04-2020 @anbu23 and @DeaD_EyE thanks for your replies. Here's the code if anyone needs it in the future : def sort_last(tuples): for t in tuples : last_element = t[-1] return sorted(tup, key=lambda x:x[-1]) tup =[ (1, 7), (1, 3), (3, 4, 5), (2, 2)] print(sort_last(tup))And output :
RE: Sort last - Yoriz - May-04-2020
Code becomes def sort_last(tuples): return sorted(tuples, key=lambda x: x[-1]) tup = [(1, 7), (1, 3), (3, 4, 5), (2, 2)] print(sort_last(tup))
RE: Sort last - pyzyx3qwerty - May-04-2020 Thanks @Yoriz. Not only do i get the same expected result, but it make my codes shorter RE: Sort last - pyzyx3qwerty - May-05-2020 (May-04-2020, 03:52 PM)Yoriz Wrote: [*]On line 4,But, if I may ask, what is this global tup you are talking about? And where can it be used?
RE: Sort last - DeaD_EyE - May-05-2020 tup is just a name, which refers to the object [(1, 7), (1, 3), (3, 4, 5), (2, 2)] .anbu23 named it tup .I guess he has chosen this name, because the inner elements are tuples. Finding the right names is not always easy. |