Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431

Операции со словарем

21.05.2016, 13:47. Показов 1436. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть список чисел, мы хотим получить максимально встречающееся число,. если их несколько , то получить несколько, хотелось бы решить данную задачу именно со словарем...
возьмем произвольный список
Python
1
s = [1,1,1,1,1,1,1,1,123,123,545,56,1,1,2,2,2,2,2,3,3,3435,3,3,4,4,5,5,6]
создадим словарь пустой
Python
1
rez = {}
Циклом пройдемся по уникальным элементам и запишем их в словарь, ключ - это число уникальное, значение сколько раз оно встречается
Python
1
2
for i in set(s):
    rez[i]  = s.count(i)
вывывведим значение, оно будет 10, . именно столько у нас единиц
Python
1
max(rez.values())
а вот, как получить ключ, знаяя значение, i don't know.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2016, 13:47
Ответы с готовыми решениями:

Операции над словарем
Данные о сотрудниках в программе хранятся в словаре staff = Вычислить print("Имя и Фамилию сотрудника с самой высокой...

Работа со словарём
Реализовал первое условие, со вторым проблемы. Есть идеи, как с этим новеньким и его ростом работать? 1. Для представления необходимой...

Пример со словарём
В книге нашёл пример программы,использующей словарь.При вводе ключа, программа показывает, что значение не найденно, даже если оно...

19
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 14:02
Лучший ответ Сообщение было отмечено izuchaju_python как решение

Решение

Python
1
2
3
4
5
6
7
8
9
from collections import Counter
 
data = [
     1, 1, 1, 1, 1, 1, 1, 1, 123, 123, 545, 56, 1, 1, 2, 2, 2, 2, 2, 3, 3,
     3435, 3, 3, 4, 4, 5, 5, 6
]
 
counter = Counter(data)
print(counter.most_common(5))
1
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
21.05.2016, 14:21  [ТС]
alex925, Спасибо, хороший модуль, без проблем вот так
Python
1
print(str(counter.most_common(1))[2])
получаешь самое часто встречающееся число, но все же, ключ никак в словаре не получить по значению?! а то этот вопрос не дает покоя.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 14:32
Цитата Сообщение от izuchaju_python Посмотреть сообщение
ключ никак в словаре не получить по значению?!
ну самый простой способ - пробежаться по всему словарю (добавил еще "5" чтобы было два максимальновстречающихся числа)
Python
1
2
3
4
5
6
7
8
9
10
11
s = [1, 1, 1, 1, 1, 1, 1, 1,
     123, 123, 545, 56, 1, 1,
     2, 2, 2, 2, 2, 3, 3, 3435,
     3, 3, 4, 4, 5, 5, 6, 5, 5,
     5, 5, 5, 5, 5, 5]
rez = {}
for i in s:
    rez[i] = s.count(i)
for i in rez:
    if rez[i] == max(rez.values()):
        print(rez[i], i)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 14:47
Цитата Сообщение от izuchaju_python Посмотреть сообщение
ключ никак в словаре не получить по значению?!
Ни как естественно, только оббегать весь словарь.
Если использовать OrderedDict можно отсортировать словарь и просто получать первый или последний элемент.

Цитата Сообщение от vdm_mar Посмотреть сообщение
if rez[i] == max(rez.values()):
А ты расточительный товарищ... На каждой итерации вызываешь функцию, вместо того, чтобы 1 раз запомнить вычисленное значение.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 14:47
не поверишь, было отдельно maximum = max(rez.values())
"упростил" зачем-то
0
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
21.05.2016, 14:58
Python
1
2
3
4
5
s = [1,1,1,1,1,1,1,1,123,123,545,56,1,1,2,2,2,2,2,3,3,3435,3,3,4,4,5,5,6]
rez = {}
for i in set(s):
    rez[i]  = s.count(i)
print(max(rez.items(), key=lambda x: x[1]))
?
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:09
Цитата Сообщение от izuchaju_python Посмотреть сообщение
Циклом пройдемся по уникальным элементам и запишем их в словарь, ключ - это число уникальное, значение сколько раз оно встречается
Можно сделать словарь "наоборот" - в ключи записать количество повторений, в значение - список чисел с одинаковым повторением
Python
1
2
3
4
5
6
7
8
9
10
11
12
s = [1, 1, 1, 1, 1, 1, 1, 1,
     123, 123, 545, 56, 1, 1,
     2, 2, 2, 2, 2, 3, 3, 3435,
     3, 3, 4, 4, 5, 5, 6, 5, 5,
     5, 5, 5, 5, 5, 5]
rez = {}
for i in set(s):
    if rez.get(s.count(i)):
        rez[s.count(i)].append(i)
    else:
        rez[s.count(i)] = [i]
print(rez[max(rez)])
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 15:13
Цитата Сообщение от vdm_mar Посмотреть сообщение
Можно сделать словарь "наоборот" - в ключи записать количество повторений, в значение - список чисел с одинаковым повторением
Ага и половину значений ты перезатрешь...
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:13
Цитата Сообщение от alex925 Посмотреть сообщение
перезатрешь...
append же
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 15:16
vdm_mar, словарь же...
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:20
В примере len(s) = 37, через сумму повторов*значений в rez тоже 37 получилось. В примере есть повторы. Что-то туплю. Не пойму, в каких случаях значения будет затираться.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 15:21
P.S реализацию сразу не посмотрел, так не перезатрешь, согласен, но на мой взгляд это ректальный способ решения задачи.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:26
просили ж со словарем помочь решить...вот со словарем все варианты перебираю
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 15:32
collections.Counter возвращает как раз словарь, только правда упорядоченный и это стандартное решение. Велосипеды это не есть хорошо, когда в стандартной библиотеке есть стандартизированные решение.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:41
Ну тут же проблема не со словарем, а с результатами, как вытащить из словаря. Наример, counter.most_common(5) - а почему "5"? а не "1" или "10"? Я, правда, в модулях "ноль" - я в Лутце до модулей не дошел, пара страниц осталась. Может в collections и есть вывести максимальновстречающиеся числа, если их несколько. Попробую разобраться.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 15:44
Цитата Сообщение от vdm_mar Посмотреть сообщение
Может в collections и есть вывести максимальновстречающиеся числа, если их несколько
Так most_common как раз это и делает =D вообще-то, документация тебе в помощь.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 15:59
Цитата Сообщение от alex925 Посмотреть сообщение
Так most_common как раз это и делает =D вообще-то
а вот нифига
Return a list of the n most common elements and their counts from the most common to the least. If n is omitted or None, most_common() returns all elements in the counter.
Он не выведет сам "1" и "5" если у них будет одинаковое максимальнное количество повторений. Ну если только мы не догадаемся, что таких чисел с маскимальным повторением - два. А если мы сделаем n = 3, или n = 5, то вслед за "1" и "5" most_common() выведет следующие числа, но уже с мЕньшим числом повторением.
most_common() пригодится, если точно знать что число с максимальным повтором только одно.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.05.2016, 16:06
Максимальное количество повторений это довольно относительное значение, по этому логику вывода значений при необходимости нужно писать самому в зависимости от ситуации, а класс Counter дает все, что нужно.
0
 Аватар для vdm_mar
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
21.05.2016, 16:08
классный модуль
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2016, 16:08
Помогаю со студенческими работами здесь

Задача со словарём
Описать программу с использованием словаря. Каждый студент знает M языков. Определите, какие языки знают все студенты. Определите языки,...

Проблема со словарем
Вопрос может показаться тупым но все же. Задание было написать примитивный словарь для пары слов (страны). Проблема в том то я не могу...

Задача со словарем
Помогите выполнить задачу) Дан список с визитами по городам и странам. Напишите код, который возвращает отфильтрованный список...

Работа со словарём
Здравствуйте. Есть файл на рабочем столе, в котором две строки. Первая = почта:пароль. Вторая = никнейм:пароль. Данные указаны через...

Работа со словарем
Всем привет! Есть словарь с таким вот содержанием: {"2015-01-24 00:00:00": 1, "2015-01-24 00:00:02": 2,"2015-01-24...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru