Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 20.09.2021
Сообщений: 33

Создание компактного словаря

09.10.2021, 10:51. Показов 1136. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Как создать компактный словарь, т.е чтобы такой словарь {1: 2, 3: 4, 5: 4, 7: 2, 9: 4} стал {(3,9,5): 4, (1,7): 2}. Можно использовать только один цикл for и метод get.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2021, 10:51
Ответы с готовыми решениями:

Создание словаря
Заданы данные о n=10 учащихся нескольких школ, занимающихся в районном доме творчества (фамилия, имя, адрес, номер школы и класс). Создать...

Создание словаря
С помощью интернета создай словарь "страна - население" (как минимум 4 страны) Программа спрашивает у пользователя какую страну...

Создание словаря
в файле districts.txt содержится информация о численности населения (тыс.жителей) районов городов извлечь эти данные и сформировать...

12
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
09.10.2021, 11:06
Natalli666, уточните, по какому принципу идет распределение ключей и значений? Я логики не улавливаю
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
09.10.2021, 11:09
Поменять ключи и значения местами
тоже самое, но наоборот
0
1 / 1 / 0
Регистрация: 20.09.2021
Сообщений: 33
09.10.2021, 11:10  [ТС]
Ключи с одинаковыми значениями собираются в tuple
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
09.10.2021, 11:12
enx, в ключах нового словаря кортеж ключей имеющих одинаковое значений. ключи 3,9,5 имеют значение 4
а ключи 1,7 значение 2.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
09.10.2021, 11:15
enx, сгруппировать одинаковые значения.

Я не смог придумать, как за один цикл собрать такой словарь.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.10.2021, 11:22
Python
1
2
3
4
5
6
dic = {1: 2, 3: 4, 5: 4, 7: 2, 9: 4}
 
dic2 = {tuple(i for i in dic.keys() if dic[i] == j): j for j in set(dic.values())}
print(dic2)
 
# {(1, 7): 2, (3, 5, 9): 4}
1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
09.10.2021, 11:24
Рыжий Лис, Semen-Semenich,
Спасибо, понял!
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
09.10.2021, 12:24
iSmokeJC,
Цитата Сообщение от Natalli666 Посмотреть сообщение
только один цикл for и метод get
у вас два цикла и нет get
1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
09.10.2021, 12:32
Semen-Semenich, у меня по субботам шалом-шаббат , но тоже нет гениальных идей, как это сделать в 1 цикл...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.10.2021, 13:16
Цитата Сообщение от Natalli666 Посмотреть сообщение
{(3,9,5): 4, (1,7): 2}
А какой порядок у ключей словаря? Что-то в упор его не вижу.
0
1 / 1 / 0
Регистрация: 20.09.2021
Сообщений: 33
09.10.2021, 13:23  [ТС]
Цитата Сообщение от Arsegg Посмотреть сообщение
А какой порядок у ключей словаря? Что-то в упор его не вижу.
Я так понимаю, что порядок особо не имеет значения. Хотя мне кажется, что тут опечатка и должно быть {(3,5,9): 4, (1,7): 2}, т.е в порядке следования в изначальном словаре
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
09.10.2021, 14:24
enx, тот же тупик. но если с граблями то по условию в коде должен быть один цикл и ни слова что его нельзя использовать дважды
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def fun(n):
    n1 = {}
    for key in n:
        nev_key = n.get(key)
        if isinstance(nev_key, list):
            n1[tuple(nev_key)] = key
        else:
            n1[nev_key] = n1.get(nev_key, []) + [key]
    return n1
 
n = {1: 2, 3: 4, 5: 4, 7: 2, 9:4}
nev_n = fun(fun(n))
print(nev_n)
что то крутится с рекурсией но лень голову забивать

Добавлено через 32 минуты
как то так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def fun(n, x = 1):
    n1 = {}
    for key in n:
        nev_key = n.get(key)
        if isinstance(nev_key, list):
            n1[tuple(nev_key)] = key
        else:
            n1[nev_key] = n1.get(nev_key, []) + [key]
    if not x:
        return n1
    return fun(n1, 0)
 
n = {1: 2, 3: 4, 5: 4, 7: 2, 9:4}
nev_n = fun(n)
print(nev_n)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2021, 14:24
Помогаю со студенческими работами здесь

Создание словаря списков
Доброго дня! пытаюсь создать словарь списков, где ключом является значение ячеек excel файла столбца А, значениям список состоящий из...

Создание словаря в python
Использовать словарь, содержащий следующие ключи: название пункта назначения рейса; номер рейса; тип самолета. Написать программу,...

Создание латино-английского словаря
хелп плиз, как сделать так чтобы мой код принимал такие входные данные: { "apple" : , 'fruit' : , 'punishment' : } а то мой код...

Создание словаря для Шифра Виженера
def form_dict(): d = {} iter = 0 for i in range(0,127): d = chr(i) iter = iter +1 return d

Добрый день ! Задача на создание словаря
Нужно в задаче сформировать словарь,позволяющий пользователю добавлять новые слова в словарь,менять слова ,которые есть в словаре та...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru