For example:
names = ['Rodrigo', 'Matthew', 'Adam', 'Will']
def get_len(name):
return len(name)
print(max(names, key=get_len))
print(min(names, key=get_len))
# or
print(max(names, key=lambda name : len(name)))
print(min(names, key=lambda name : len(name)))
How do I know whether it is possible or not possible to use a function as a 'key=func' argument?
As indicated in the documentation, min()
(and max()
) expect a one-argument ordering function like that used for list.sort()
. https://docs.python.org/3/library/functions.html#min
So, what's expected is a function that takes a single argument from the collection that min()
or max()
is applied to and that returns a single value that can be ordered with <
and >
.
So, for names
, which is a list of strings, that would be a function that takes a single str
as an argument and returns something that is comparable using <
or >
to order the strings, for example its length.
So, even this would work:
names = ['Rodrigo', 'Matthew', 'Adam', 'Will']
print(max(names, key=len))
To answer your general question "How do I know whether it is possible or not possible to use a function as a key
argument to min()
?"
You check if the function:
min()
will be applied to<
and >