Прямой путь:
def delete_if_not(predicate_key, some_dict):
for key, subdict in some_dict.items():
if not subdict.get(predicate_key, True):
del some_dict[key]
Тестирование:
mydict = {
'test1': {
'turned_on': True,
'other_data': 'foo',
},
'test2': {
'turned_on': False,
'other_data': 'bar',
},
}
delete_if_not('turned_on', mydict)
print mydict
Другие ответы на этой странице до сих пор создают другой диктат. Они не удаляют ключи в вашем настоящем дикте.