sorted([‘Some’, ‘words’, ‘sort’, ‘differently’])
[‘Some’, ‘differently’, ‘sort’, ‘words’]
but that sorts uppercased words before words that are lowercased. Using the key keyword you can change each entry so it’ll be sorted differently. We could lowercase all the words before sorting, for example:
def lowercased(word): return word.lower()
…
lowercased(‘Some’)
‘some’
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=lowercased)
[‘differently’, ‘Some’, ‘sort’, ‘words’]
We had to create a separate function for that, we could not inline the def lowercased() line into the sorted() expression:
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=def lowercased(word): return word.lower())
File “”, line 1
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=def lowercased(word): return word.lower())
^
SyntaxError: invalid syntax
A lambda on the other hand, can be specified directly, inline in the sorted() expression:
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=lambda word: word.lower())
[‘differently’, ‘Some’, ‘sort’, ‘words’]
Lambdas are limited to one expression only, the result of which is the return value.
来源: http://www.92to.com/bangong/2017/03-01/17909089.html