Удалить все элементы из словаря, ключ которых является элементом списка - PullRequest
7 голосов
/ 08 ноября 2010

Как удалить все элементы из словаря, ключ которого является элементом списка?

Ответы [ 7 ]

11 голосов
/ 08 ноября 2010

[ Примечание : Это не прямой ответ, но с учетом более ранних предположений, что вопрос выглядит как домашнее задание.Я хотел предоставить помощь, которая поможет решить проблему, учась у нее]

Разложите вашу проблему, которая :

  1. Как получить элемент изlist
  2. Как удалить ключ: значение в словаре

Дополнительная справка:

Как получить все элементы списка на python?

Для цикла работает на всех последовательностях и список является последовательность.

for key in sequence: print key

Как удалить элемент в словаре?

используйте метод del (key).

Вы сможете объединить две задачи.

10 голосов
/ 08 ноября 2010
for key in list_:
    if key in dict_:
        del dict_[key]
7 голосов
/ 08 ноября 2010
map(dictionary.__delitem__, lst)
1 голос
/ 08 ноября 2010
d = {'one':1, 'two':2, 'three':3, 'four':4}
l = ['zero', 'two', 'four', 'five']
for k in frozenset(l) & frozenset(d):
    del d[k]
1 голос
/ 08 ноября 2010
newdict = dict(
    (key, value) 
    for key, value in olddict.iteritems() 
    if key not in set(list_of_keys)
)

Позже (как в конце 2012 года):

keys = set(list_of_keys)
newdict =  dict(
    (key, value) 
    for key, value in olddict.iteritems() 
    if key not in keys
)

Или если вы используете словарь языка Python 2.7+:

keys = set(list_of_keys)
newdict =  {
    key: value
    for key, value in olddict.iteritems() 
    if key not in keys
}

Или, может быть, дажеПонимание словаря Python 2.7 плюс набор пересечений на клавишах:

required_keys = set(olddict.keys()) - set(list_of_keys)
return {key: olddict[key] for key in required_keys}

О, да, возможно, проблема в том, что у меня было условие, обратное для вычисления требуемых ключей.

0 голосов
/ 19 января 2012
for i in lst:
    if i in d.keys():
        del(d[i])
0 голосов
/ 08 ноября 2010

Я ничего не знаю о Python, но, думаю, вы можете просмотреть список и удалить записи по ключу из словаря?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...