Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 24

Компактная версия словаря

22.06.2020, 23:48. Показов 3258. Ответов 21

Студворк — интернет-сервис помощи студентам
Написал функцию, она создаёт изменённый словарь:
Python
1
2
3
4
5
6
7
d1 = {1 : 2, 3 : 4, 5 : 4, 7 : 2, 9 : 4}
def swap_dict (d):
    rd = {}
    for k, v in d.items():
        rd[v] = rd.get(v, []) + [k]
    return rd
print(swap_dict(d1))
Как сделать, чтобы функция создавала его компактную версию?
В компактном словаре ключи сгруппированы по исходным значениям dict в кортежи.
Пример: словарь {1: 2, 3: 4, 5: 4, 7: 2, 9: 4}, сжатый в {(3, 9, 5): 4, (1, 7): 2}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2020, 23:48
Ответы с готовыми решениями:

Из словаря создается объект, именами атрибутов которого будут ключи словаря
Из словаря создается объект, именами атрибутов которого будут ключи словаря, а значениями - значения из словаря по заданным ключам (a,b,c),...

Как проверить наличие значения словаря словаря в словаре словарей?
есть массив parsdata, который содержит результаты парсинга. нужно проверить, спарсилось ли что-то новое. или нет в сравнении со словарем...

Как можно сделать сортировку словаря по значениям из другого словаря
Ребят, не подскажите как можно сделать сортировку словаря по значениям из другого словаря? Например, у меня есть некий уже готовый и...

21
enx
 Аватар для enx
1191 / 767 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
16.03.2022, 10:11
Студворк — интернет-сервис помощи студентам
Stakanovec, вот пример прошлого кода, я в нем подправил одну маленькую деталь, у тебя должен был возникнуть вопрос, почему это работает в 4 строке, почему не получится просто + key или + (key), почему там стоит запятая и т.д:


Python
1
2
3
4
5
6
7
8
9
def foo(dct):
    res = {}
    for key, val in dct.items():
        res[val] = res.get(val, ()) + (key,)
    return res
 
 
input_dict = {1: 2, 3: 4, 5: 4, 7: 2, 9: 4}
print(foo(input_dict))
А вот теперь квест для тебя, подумай, почему значения в итоге получатся кортежами?
0
0 / 0 / 0
Регистрация: 02.09.2021
Сообщений: 83
16.03.2022, 11:42
Цитата Сообщение от enx Посмотреть сообщение
Stakanovec, вот пример прошлого кода, я в нем подправил одну маленькую деталь, у тебя должен был возникнуть вопрос, почему это работает в 4 строке, почему не получится просто + key или + (key), почему там стоит запятая и т.д:
(key,) - ты имеешь в виду запятая здесь? так метод гет принимает значение дефолт, значение, которое нужно вернуть в случае, если ключа не существует

Цитата Сообщение от enx Посмотреть сообщение
А вот теперь квест для тебя, подумай, почему значения в итоге получатся кортежами?
ну мы ведь ключи обращаем в зачения и добавляем в кортеж, только сдесь res.get(val, ()) + (key,) должно быть так res.get(val, tuple()) + (key,), как я понимаю. я прав?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2022, 11:42

Компактная таблица
Добрый день! Посоветуйте пожалуйста какой-нибудь data grid или как сделать компактную таблицу. Стек html, css, js. Спасибо!

Компактная загрузка изображения
Пытаюсь написать код который будет загружать картинку на сайт не перезагружая страницу целиком. index.php ...

Замена STL (компактная)
При подключении STL в GCC размер exe-файла увеличивается примерно на 600 кб Подскажите, пожалуйста, любую альтернативу. Пусть даже не...

Компактная запись метода
Доброго времени суток, форумчане! Подскажите пожалуйста, как с помощью Linq более компактно и кратко записать сей метод DateTime...

Компактная инициализация списка списков
Чтобы составить двумерный несимметричный массив из заранее известных объектов, делаю так: //основной список List<MyObject>...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru