Рассмотрим следующий по умолчанию ДИКТ:Фильтрация defaultdict на основе значения
data = defaultdict(list)
data['key1'] = [{'check': '', 'sth1_1':'k1', 'sth1_2':'k2'}]
data['key2'] = [{'check': '0', 'sth2_1':'k3'}, {'check': 'asd', 'sth2_2':'k4'}, {'check':'1', 'sth2_3':'k5'}]
и так далее ..
Я хотел бы FILER из data
словарей (от data.values ()), значение 'check' != '1'
Для данного входа выше я бы ожидать:
defaultdict(<type 'list'>, {'key2': [{'sth2_3': 'k5', 'check': '1'}])
До сих пор я получил:
for k, v in data.items():
print "k, v: ", k, v
v[:] = [d for d in v if d.get('check') == '1']
Но это дает мне выход с нежелательной 'key1': []
:
defaultdict(<type 'list'>, {'key2': [{'sth2_3': 'k5', 'check': '1'}], 'key1': []})
Что бы лучший вещий способ решить это?
Почему '' key1 ': [] 'нежелательно? Когда 'd.get ('check') == '1'' дает' False', 'v [:]' будет пустым списком. Вы хотите удалить «key1»? –
К сожалению, да, мне нужно, чтобы отфильтрованный dict содержал только значение ключа, отвечающее установленному условию. –