<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Mon, Oct 10, 2016 at 11:30 PM Elliot Gorokhovsky <<a href="mailto:elliot.gorokhovsky@gmail.com">elliot.gorokhovsky@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg">- I expect tuples will also be worth specializing (complex sort keys are often implemented as tuples).<br class="gmail_msg"></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div></div></div></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">I'm not sure what you mean here... I'm looking at the types of lo.keys, not of saved_ob_item (I think I said that earlier in this thread by mistake actually). So if someone is passing tuples and using itemgetter to extract ints or strings or whatever, the current code will work fine; lo.keys will be scalar types. Unless I misunderstand you here. I mean, when would lo.keys actually be tuples?</div></div></div></div></div></div></blockquote><div><br></div><div>If someone wanted to sort, e.g., a table (likely a list of tuples) by multiple columns at once, they might pass the key function as `itemgetter(3, 4, 5)`, meaning to sort by "column" (actually item) 3, then columns 4 and then 5 as tiebreakers. This itemgetter will return a new tuple of three items, that tuple being the key to sort by. Since tuples sort by the first different item, in this theoretical example the result of sort() will be exactly what the user wanted: a table sorted by three columns at once.<br><br>A practical example of such a use case is sorting by last name first and then by first name where two people have the same last name. Assuming a list of dicts in this case, the key function passed to sort() would simply be `itemgetter('lastname", "firstname")`, which returns a tuple of two items to use as the key.<br><br></div><div>So yes, there are perfectly valid use cases for tuples as keys.<br></div></div></div>