Python beginner - Sorting tuples using lambda functions
<p>I'm going through the tutorial intro for Python and I'm stuck on understanding a piece of code. This is from section 4.7.5 of the tutorial.</p>

<pre><code>pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
pairs
</code></pre>

<p>This bit of code returns </p>

<pre><code>[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
</code></pre>

<p>So in line one, it defines pairs with a list of different tuples. I get that.
Line two is where I'm completely thrown off and I've done quite a bit of messing around with it to try to understand what's happening.</p>

<p>I've found that sort() is applying a built-in function to the variable pairs, and presumably it is sorting it per the instructions I'm giving it.</p>

<p>The sort() function requires a key, and key has to be defined using a function, hence the use of lambda. I think all of this is correct, but I may be way off here.</p>

<p>Lambda defines a new parameter, "pair" on the left side of the colon, and on the right side is the calculation to define the return value of the lambda function.</p>

<p>That's where I'm thrown off. What does "pair[1]" do? What is its affect on the "pair" on the left side of the colon? </p>

<p>What value does it return? I can't seem to get it to return any sort of value outside of coding it just like this.</p>

<p>I'm guessing that it somehow points to a specific tuple and sorts it based on repositioning that, but I'm not sure of the logic behind that. </p>

<p>Can anyone explain this for me? Thank you.</p>

<p>your lambda function takes an tuple as input and return the element with index 1 (so the second element since the first would have 0 for index).
so the sorting will only take into consideration the second element of each tuple (the English word). That's why your output is sorted alphabetically in the second element <code>'four'&gt;'one'&gt;'three'&gt;'two'</code></p>

python sorting lambda