Форум сайта python.su
0
Добрый всем день.
Вопрос такой. Есть вложенный словарь, например:
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']
Отредактировано xost (Авг. 15, 2012 16:37:33)
Офлайн
20
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]}}
Отредактировано EBFE (Авг. 15, 2012 17:16:13)
Офлайн
52
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)
Отредактировано fata1ex (Авг. 15, 2012 17:41:43)
Офлайн