2017-01-11 2 views
1

Я использую Python-3.4 через Jupyter Notebook. Я использую следующий код, чтобы удалить грязный набор из заданного списка:python: KeyError при удалении набора из заданного списка

clean_set = set(given_list).remove(dirty_set) 

Но получил следующее сообщение об ошибке:

--------------------------------------------------------------------------- 
KeyError         Traceback (most recent call last) 
<ipython-input-25-8c7b49a49cb5> in <module>() 
----> 1 clean_set = set(given_list).remove(dirty_set) 

KeyError: {'730', 'C07', '5Q2', ...} 

Любая идея, что я пропустил? Благодаря!

+1

Вы пытаетесь найти 'set (given_list) - dirty_set'? –

+1

Учитывая, что набор не содержит наборов, я сомневаюсь, что ваш список содержит множество, иначе у вас не должно быть 'KeyError', а' TypeError' –

+0

@PatrickHaugh: Да – Edamame

ответ

2

Вы можете удалить грязные элементы из списка, используя список понимание:

clean_list = [i for i in given_list if i not in dirty_set] 

Или используя разницу множеств, если вы хотите дубликаты удалены:

clean_set = set(given_list).difference(dirty_set) 

Вы можете использовать оператор - если dirty_set уже набор, но более предпочтительным является set.difference, так как он принимает любой итерабельный.

Смежные вопросы