Найти - Пользователи
Полная версия: Удаление данных из вложеного словаря
Начало » Python для новичков » Удаление данных из вложеного словаря
1
xost
Добрый всем день.

Вопрос такой. Есть вложенный словарь, например:
d={'a':{'aa':[1,2,3],'bb':[3,4,5]},'b':{'aa':[5,6,7],'bb':[7,8,9]}}
есть список “ключей”, например
keys=['a','bb']
и значение, например
 val=4
из сушествуещего словаря надо удалить это значение, т.е.
d['a']['bb'].remove(4)
либо
keys=['a'], val='aa'
, т.е. надо сделать.
del d['a']['aa']
Хочется автоматизировать эту процедуру, быть может кто наведёт на мысли ?
Заранее спасибо.
EBFE
d={'a':{'aa':[1,2,3],'bb':[3,4,5]},'b':{'aa':[5,6,7],'bb':[7,8,9]}}
keys=[['a','bb'],['a']]
vals = [4,'aa']
key_val_pairs = zip(keys, vals)
for key_list,val in key_val_pairs:
    inner_elem = d
    for key in key_list:
        inner_elem = inner_elem[key]
    if isinstance(inner_elem, list):
        inner_elem.remove(val)
    else:
        del(inner_elem[val])
>>> d
{'a': {'bb': [3, 5]}, 'b': {'aa': [5, 6, 7], 'bb': [7, 8, 9]}}
fata1ex
data = [[['a', 'bb'], 4], [['a'], 'aa']]
 
def remove_from_dict(dictionary, keys, value):
    if keys:
        remove_from_dict(dictionary[keys[0]], keys[1:], value)
    else:
        if isinstance(dictionary, dict):
            del dictionary[value]
        else:
            dictionary.remove(value)
        
for removal_data in data:
    remove_from_dict(d, *removal_data)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB