How do I sort a list of strings by key=len
first then by key=str
?
I\'ve tried the following but it\'s not giving me the desired sort:
Define a key function that returns a tuple in which the first item is len(str)
and the second one is the string itself. Tuples are then compared lexicographically. That is, first the lengths are compared; if they are equal then the strings get compared.
In [1]: ls = ['foo','bar','foobar','barbar']
In [2]: sorted(ls, key=lambda s: (len(s), s))
Out[2]: ['bar', 'foo', 'barbar', 'foobar']