在列表python中找到最长的单词

Roa*_*ner 2 python python-3.x

我试图在非空列表中找到最长的单词.我的函数应该返回最长的单词.如果列表中的元素长度相等,我试图在Unicode排序方面排序最长.例如,我试图返回以下内容:

    >>> highest_word(['a', 'cat', 'sat'])
    'sat'
    >>> highest_word(['saturation', 'of', 'colour'])
    'saturation'
    >>> highest_word(['samIam'])
    'samIam'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以得到第一个工作,这是我的代码到目前为止:

    def highest_word(wordlist):
    longestWord = ""
    max_len = 0

    for word in wordlist:

        if len(word) > max_len:
            longestWord = len(word)
            longestWord = word
    return longestWord
Run Code Online (Sandbox Code Playgroud)

任何形式的帮助将不胜感激.

Bah*_*rom 10

这是一个简单的单线

print(max(['a', 'cat', 'sat', 'g'], key=lambda s: (len(s), s)))
Run Code Online (Sandbox Code Playgroud)

这通过将列表的每个元素映射到包含其长度和字符串本身的元组来工作.

当比较两个元AB,如果A[0] > B[0]A > B.只有A[0] == B[0]考虑了第二个要素.因此,如果两个字符串的长度相等,则将字符串作为决胜局进行比较.

  • 不.但我强烈建议您使用此解决方案.詹姆斯的答案可行,但需要时间与列表平方的长度成正比(O(N ^ 2)).`max(map(len,a))`遍历整个列表,并为列表的每个元素计算.BAH的答案需要时间来确定列表的长度(O(N)). (3认同)