我正在尝试在Python中找到最长的单词,但结果却是错误的。下面的代码是在交互模式下完成的。我应该以最长的单词/字符串接收到“商品”(10个字符),但是却收到了“欢迎”(7个字符)。

 str = 'welcome to the merchandise store' #string of words
 longest = []                             #empty list
 longest = str.split()                    #put strings into list
 max(longest)                             #find the longest string
 'welcome'                                #Should've been 'merchandise?'

最佳答案

它按字母顺序而不是长度对字符串进行排序,您需要的是:

max(longest, key=len)


让我进一步澄清一下。在Python中,字符串的默认比较是按字母顺序进行的。这意味着“ aa”在所有意图和目的上都将小于“ abc”(python2中的cmp和python2 / 3中的cmp的函数。我不建议使用此方法,因为它最终将成为cmp=lambda x,y: len(x)-len(y)之类的东西,与key=len相比,其可读性要差得多,并且python3不支持该方法。

如果您对使用密钥还有其他疑问,建议阅读this特别注意(7),该内容涵盖了list.sort的cmp和密钥,它们以相同的方式使用它们。

关于python - 查找最长的单词错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31173902/

10-10 11:10