Форум сайта python.su
0
Подскажите новичку изучающему
Есть простая функция - она выбирает из словаря по значению самые частые слова
На входе словарь , а на выходе список с топ 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)
#max_index, max_value = max(enumerate(dicc), key=operator.itemgetter(0))
Отредактировано mikhail999w (Май 31, 2019 17:24:29)
Офлайн
73
а где так учат записывать числа в словарь
“Дом”:(int)4 “Сон”:(int)6 ?
Офлайн
73
mikhail999wв результате только выдает список с цифрами. а где топ 5 частных слов ? кривенько это просто сказано. ваша функция работает совсем не так как требуется. а вы в курсе что словарь можно отсортировать по значениям на уменьшение и вывести срез 5 первых ключей? так же можно из словаря получить список кортежей (ключ,значение) а если применить к кортежу реверс или срез то
Есть простая функция - она выбирает из словаря по значению самые частые слова
На входе словарь , а на выходе список с топ 5 частных слов
(ключ,значение)[::-1]
Отредактировано marvellik (Май 31, 2019 17:46:50)
Офлайн
0
“Дом”
int)4 “Сон”
int)6 ? это я из отладчика скопировал)))
я на анг форуме нашел такой вариант он работает
dicc.sort(key=lambda x: x[1]) max_index, max_value = max(enumerate(dicc), key=operator.itemgetter(0))
а если применить к кортежу реверс или срез тоА можно поподробнее?
[-5:]
Отредактировано mikhail999w (Май 31, 2019 18:20:25)
Офлайн
186
>>> dct = {"дом":6, "сон":4, "слон":1000, "дын":1, "два":2, "дэвять":9} >>> sorted(dct, key=lambda x: -dct[x]) ['слон', 'дэвять', 'дом', 'сон', 'два', 'дын']
Офлайн
73
def print_sort5(): print( sorted(dicc,key = lambda x : dicc[x],reverse = True)[:5]) dicc = {"дом":6, "сон":4, "слон":1000, "дын":1, "два":2, "дэвять":9} print_sort5()
== ['слон', 'дэвять', 'дом', 'сон', 'два'] >>> )
Отредактировано marvellik (Май 31, 2019 20:41:49)
Офлайн
0
спасибо!
Офлайн