为什么在元组中使用键?这里的语法是什么


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的用武之地。在这里,keylen(长度(,即您尝试查找长度最高的元素。对于单词,您不能简单地使用大于或小于,因此您需要指定一个用于确定模式的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

最新更新