简体   繁体   中英

How is 'key=lambda x: x[1]' working here?

I am sorting a tuple of tuples by second item. The tuple I need to sort is this: tuple1 = (('a', 23),('b', 37),('c', 11), ('d',29)). The solution to this program given on the internet is as follows:

tuple1 = (('a', 23),('b', 37),('c', 11), ('d',29))

print(tuple(sorted(list(tuple1), key=lambda x: x[1])))

What I can't understand is the function of key=lambda x: x[1] expression in the code. What does the keyword key denote here? I know lambda is an anonymous function. But how is it working in this code to give the desired output?

The key argument is ment to specify how to perform the sort. You can refer to the following link:

https://www.w3schools.com/python/ref_func_sorted.asp

For a more in-depth explanation of sorted and it's arguments have a look at the following link:

https://developers.google.com/edu/python/sorting

In your case, you sort the list of tuples based on the second element from each tuple.

The keyword key is an argument to sorted , it is the element that is compared when sorting list(tuple1)

The lambda function simply selects the second element of each tuple in the list, so we're comparing the ints not the characters

For a List of T, key takes a function T -> int (or anything thats sortable, but ints behave in the most expected way), and sorts by those. Here T = (int, int) and the lambda returns the 2nd int

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM