Сравнить список и ключи словаря

Рейтинг: 0Ответов: 1Опубликовано: 06.06.2023

Есть список - ['name1','name2','name3','name4','name5']

Есть словарь -

{
 'name1':{'1':'2'},
 'name2':{'1':'2'},
 'name3':{'1':'2'},
 'name4':{'1':'2'},
 'name5':{'1':'2'},
 'name6':{'1':'2'}
}

Необходимо, чтобы в третью переменную записывался элемент словаря {'name6':{'1':'2'}...}, в том случае, если ключа словаря нет в списке. Ни список, ни словарь не отсортирован, поэтому проходится надо каждый ключ словарь по всем элементам списка.

Пробовала перебирать список и словарь вложенными циклами, но он выдает ошибку

TypeError: 'set' object is not subscriptable,

поэтому ищу возможность. Нужен словарь такого вида, так как потом он записывается в json.

Ответы

▲ 0Принят

Не совсем понятно, как вы пробовали - код в вопросе вы не привели. обычным перебором ключей по списку вполне себе решается задача:

l = ['name1','name2','name3','name4','name5']
d = {'name1':{'1':'2'},'name2':{'1':'2'},'name3':{'1':'2'},'name4':{'1':'2'},'name5':{'1':'2'},'name6':{'1':'2'}}
s = set(l) # если у вас в списке могут быть неуникальные значения
           # иначе просто опустите эту строку и в строке ниже
           # измените s на имя вашего списка.
res = {k:d[k] for k in d.keys() if k not in s}

res:

{'name6': {'1': '2'}}