#python
#python
Вопрос:
Я хочу найти самое длинное слово в строке. если есть слова одинаковой длины, я выберу слово, которое является последним в алфавите.
def getKey(word):
word = word.lower()
return len(word)
def findLongestWord(text):
return max(text.split(), key = getKey)
Я хочу только изменить getKey.
Есть ли какой-нибудь способ сравнить последние версии алфавита
Комментарии:
1.
return len(word), word
…2. я думаю, он имеет в виду, что чем позже, тем лучше,, A , B, C … и т. Д
3. можете ли вы привести пример? вопрос не ясен.
4. если text = «abc bcde cdef», то findLongestWord возвращает ‘bcde’ Я думаю, что могу использовать кортеж для функции max. но для сравнения строки возвращаемое слово не является последним в алфавите
Ответ №1:
я думаю, вы можете сделать это без функции getkey как
def find_longest(words):
return max(sorted(words.lower().split(), reverse=True), key=len)
Пример :
w = 'hello my name is something aomething , i am so happy'
print(find_longest(w))
#something
Ответ №2:
Как упоминалось в комментариях @deceze, решение состоит в том, чтобы вернуться len(word), word
.
Первое, что вам нужно для того, чтобы это имело смысл, это то, что при заказе кортежей порядок определяется первым значением, и если первые значения равны, то второе значение, затем третье и так далее.
Второе, что вам нужно знать, чтобы это имело смысл, это то, что при заказе строк они упорядочиваются в алфавитном порядке.
Ответ №3:
a = ['a','bb','ab']
response = ''
for elem in a:
if len(elem) > len(response):
response = elem
elif len(elem) == len(response) and elem < response:
response = elem
response
‘ab’
Комментарии:
1. я думаю, ему нужна последняя версия: bb