nuclear_skillet21011
@nuclear_skillet21011
активно изучающй ИБ

Как отсортировать списк кортежей в питон в Python?

после работы dict.items() есть список кортежей вида

[("a", 2), ("b", 4), ("c", 5), ....]

нужно отсортировать их примерно так:
sorted(array, key=lambda x: -x[1], x[0])

для нахождения наивысшего значения, подскажите как правильно организовать лямбда-функцию
(Задача была такая : найти наибольшее вхождение подстроки в строке и подать эту подстроку на выход,
возможно я не прав изобретая такой "некрасивый велосипед" , буду рад любым предложениям)

всё крошится с - SyntaxError: positional argument follows keyword argument

трабла на 30- той строчке:

import string

latin_str2 = string.ascii_lowercase
latin_str_list = list(latin_str2)
print(latin_str_list)
print()

numbers = ("1","2","3","4","5","6","7","8","9","0")

def check(text):

stroca = text.lower()
Lstr = list(stroca)
print(Lstr)

my_dict = {}

for value in Lstr:

if value in latin_str_list:

counts_0 = text.count(value)
my_dict[value] = counts_0
array = my_dict.items()
print(array)
answer = sorted( array, key = lambda x: x[-1]) # error
print('this is QA :',answer)

return(answer)


Всем добра!
  • Вопрос задан
  • 1275 просмотров
Решения вопроса 1
@GeneD88
QA
Необходимо получить подстроку, которая чаще остальных встречается в строке?

a = [("a", 2), ("c", 5), ("b", 6)]
max(a, key=lambda x: x[1])[0]
=> b


если просто отсортировать по value (max -> min):

sorted(a, key=lambda x:x[1], reverse = True)

=> [('b', 6), ('c', 5), ('a', 2)]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
angru
@angru
у вас много лишних движений:

def get_max(text):
    count_map = {char:text.count(char) for char in set(text)}

    return max(count_map, key=lambda char: count_map[char])


не надо конвертировать строку в лист, по ним и так можно прекрасно итерироваться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы