Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » python - Объединение словарей по ключу.

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

danilfg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Подскажите, пожалуйста, как можно реализовать следующее?
Ключей key1, key2 - может быть очень много.
 
Есть словарь  
{
    'key1': 'value1',  
    'key2': 'value2'
}
 
Есть еще один словарь
{
    'param1':
        {
            'id': 'value1',
            'num': 123456,
            'status_id': 123,
            'group_id': 127
        }
    'param2':
        {
            'id': 'value2',
            'num': 7890,
            'status_id': 123,
            'group_id': 127
        }
    'param3':
        {
            'id': 'value1',
            'num': 7854,
            'status_id': 123,
            'group_id': 127
        }
    'param4':
        {
            'id': 'value1',
            'num': 7854,
            'status_id': 123,
            'group_id': 127
        }
}
 
Должно получиться:
{
    'key1':
    {
        'id': 'value1',
        'num': 123456,
        'status_id': 123,
        'group_id': 127
    }
    {
        'id': 'value1',
        'num': 7854,
        'status_id': 123,
        'group_id': 127
    }
    {
        'id': 'value1',
        'num': 7854,
        'status_id': 123,
        'group_id': 127
    },
    'key2':  
    {
        'id': 'value2',
        'num': 7890,
        'status_id': 123,
        'group_id': 127
    }
}

Всего записей: 26 | Зарегистр. 12-09-2011 | Отправлено: 18:21 12-03-2020 | Исправлено: danilfg, 18:23 12-03-2020
inw

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Нужно создать новый словарь из ключей первого (dict.fromkeys(old_dict)).  
2. Каждому ключу нового словаря присвоить значение list(), обязательно не через конструктор, иначе лист один на все ключи будет.
3. Потом пройтись в цикле по всем словарям внутри второго словаря, проверяя value и дописывая соответствующий лист
 
Но лучше для таких данных использовать таблицы, ИМХО

Всего записей: 1 | Зарегистр. 14-07-2017 | Отправлено: 08:28 17-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
danilfg
есть же тема - Python
 

Цитата:
Должно получиться:

именно так - не получится, потому что кое где словарь, но без ключей.
 
ps: было время..

Код:
tmp = {v: [] for v in dict1.values()}
 
for v in dict2.values():
    if v['id'] in tmp:
        tmp[v['id']].append(v)
         
out = {k: tmp[v] for k, v in dict1.items() if v in tmp and tmp[v]}
 
print(out)

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 08:51 17-03-2020 | Исправлено: Mavrikii, 09:34 17-03-2020
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » python - Объединение словарей по ключу.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru