Найти - Пользователи
Полная версия: Функциональное программирование пример
Начало » Python для новичков » Функциональное программирование пример
1
mikhail999w
Подскажите новичку изучающему
Есть простая функция - она выбирает из словаря по значению самые частые слова
На входе словарь , а на выходе список с топ 5 частных слов
Написал ее как думал то есть “кривенько”. Работает
Хочу покрасивее в стиле функционального программирования - comprehension или range или что еще

 #dicc словарь "Дом":(int)4 "Сон":(int)6 
def print_sort5():
    max = [0, 0, 0, 0, 0, 0]
      for wordA in dicc:
        max.sort()
        i = 0
        for t in max:
            if (dicc[wordA] > t):
                max[i] = dicc[wordA]
                break
        i = + 1
    print(max)
    print(dicc)

Писал еще версию с operator.itemgetter(1), но не понравилось и и пишут скорость выполнения не айс.
 #max_index, max_value = max(enumerate(dicc), key=operator.itemgetter(0))
marvellik
а где так учат записывать числа в словарь
“Дом”:(int)4 “Сон”:(int)6 ?
marvellik
mikhail999w
Есть простая функция - она выбирает из словаря по значению самые частые слова
На входе словарь , а на выходе список с топ 5 частных слов
в результате только выдает список с цифрами. а где топ 5 частных слов ? кривенько это просто сказано. ваша функция работает совсем не так как требуется. а вы в курсе что словарь можно отсортировать по значениям на уменьшение и вывести срез 5 первых ключей? так же можно из словаря получить список кортежей (ключ,значение) а если применить к кортежу реверс или срез то
 (ключ,значение)[::-1]
станет (значение,ключ) и простая сортировка списка даст нужный результат только максимальные будут в конце но срез последних 5 элементов даст нужный результат
mikhail999w
“Дом”int)4 “Сон”int)6 ? это я из отладчика скопировал)))
я на анг форуме нашел такой вариант он работает
 dicc.sort(key=lambda x: x[1])
max_index, max_value = max(enumerate(dicc), key=operator.itemgetter(0))

а если применить к кортежу реверс или срез то
А можно поподробнее?
Отсортировать а потом вот так?
 [-5:]
Rodegast
 >>> dct = {"дом":6, "сон":4, "слон":1000, "дын":1, "два":2, "дэвять":9}
>>> sorted(dct, key=lambda x: -dct[x])
['слон', 'дэвять', 'дом', 'сон', 'два', 'дын']
marvellik
 def print_sort5():
    print( sorted(dicc,key = lambda x : dicc[x],reverse = True)[:5])
dicc = {"дом":6, "сон":4, "слон":1000, "дын":1, "два":2, "дэвять":9}
print_sort5()

или как описано выше только срез 5 элементов добавьте
 ==
['слон', 'дэвять', 'дом', 'сон', 'два']
>>> )

mikhail999w
спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB