def LongestWord(sen):
nw = ""
for letter in sen:
if letter.isalpha() or letter.isnumeric():
nw += letter
else :
nw += " "
return max(nw.split(),key=len)
print(LongestWord("Hello world"))
key=len
是什么意思。key
用在dict
对吧?我max(nw.split(), key=len)
无法理解这里的语法?
你是对的,字典包含从键到值的映射。但在这种特殊情况下,key
只是max
函数的参数之一。它允许调用方指定排序函数。有关详细信息,请参阅 https://docs.python.org/3/library/functions.html#max。
max
表示maximum
,但您要找到的最大值是多少?这就是key
的用武之地。在这里,key
是len
(长度(,即您尝试查找长度最高的元素。对于单词,您不能简单地使用大于或小于,因此您需要指定一个用于确定模式的key
。例如:
>>> words = ['this','is','an','example']
>>> max(words, key=len)
'example'
您可以将键视为字典中的键,因为它们在这里键是len
,字典会像:{4: 'this', 2: 'an', 7: 'example'}
所以它将返回最高key
的值(7
(,即example
。 您还可以定义自定义键:
>>> def vowels(word):
... '''this returns number of vowels
... in a word'''
... v = 'aeiou'
... ctr = 0
... for char in word:
... if char in v:
... ctr += 1
... return ctr
>>> words = ['standing','in','a','queue']
>>> max(words, key = vowels)
'queue'
字典的类比是:{2:'standing', 1: 'a', 3: 'queue'}
所以答案将是queue
max(nw.split(),key=len)
在这里,max(iterator, default, key=function)
max函数首先接受3个参数是迭代器,如列表,元组或字典。
第二个参数是默认值,如果迭代器为空,则返回第二个参数是可选的。
第三个参数是一个关键字参数,key=function
我们必须传递一个接受一个参数的函数,并且迭代器中的每个值都传递给该函数,因此在此函数的返回值的基础上,我们的max()
函数为我们输出。
第三个参数也是可选的参数。
这里key
是方法max()
。 由于此函数是查找字符串中最长的单词,因此您正在尝试查找具有最大length
的单词,因此key = len
例:
max(111,222,333,444,555,999) = 999
max(111,222,333,444,555,999, key = lambda x:x%3 ) = 111