У меня есть словарь и вы хотите удалить определенные значения в bad_list
из его списка значений и вернуть остаток. Вот код:Извлечение словаря подмножеством значений из другого словаря
d = {1: ['a', 'c', 'd'], 2: ['b'], 5: ['e']}
bad_list = ['d','e']
ad = {k:d[k].remove(i) for k in d.keys() for sublist in d[k] for i in sublist if i in bad_list}
print 'd =', d
print 'ad =', ad
К сожалению, что это делает это изменяет значения в d
постоянно, и возвращает None
значений в объявлении.
d = {1: ['a', 'c'], 2: ['b'], 5: []}
ad = {1: None, 5: None}
Как я могу получить словарь, который выглядит следующим образом:
new_dict = {1: ['a','c'], 2:['b']}
без зацикливания через? У меня есть гораздо больший словарь для работы, и я бы хотел сделать это наиболее эффективным способом.
Как вы сказали, просто используйте понимание списка. Почему это не работает по вашему делу? Поскольку функция 'remove' удаляет элемент из вашего списка и возвращает' None', и согласно вашему описанию, это именно то, чего вы не хотите, чтобы удалить элемент .... не используйте 'remove' – tglaria
Спасибо за ответ! – Arty