Поиск элементов списка в словаре и удаление их, если они не существуют - PullRequest
1 голос
/ 13 января 2020

У меня есть список, полный имен переменных и словарь с именами и их идентификаторами.

Пример:

name=['name1','name2'....'name20']

dicti={'1':'name1', '2':'name2','hello':'world",'animal':'dog',...'20':'name20'}

Я хочу найти словарь с элементами из списка , Если элемент списка существует в словаре, то не удаляйте его.

Я получил этот код

for i in dicti.values() :
    for j in name :
        if j != i :
            del dicti[i]
        else :
            continue

Когда я запускаю код, я получаю эту ошибку:

KeyError: 'name1'

, и он не может удалить нужный элемент.

Ответы [ 2 ]

4 голосов
/ 13 января 2020

Использование dict понимания

Пример:

name=set(['name1','name2','name20'])
dicti={'1':'name1', '2':'name2','hello':'world','animal':'dog',20:'name20'}
print({k:v for k, v in dicti.items() if v in name})

Выход:

{20: 'name20', '1': 'name1', '2': 'name2'}
1 голос
/ 13 января 2020

Вы можете использовать filter() здесь.

name=['name1','name2'....'name20']
dicti={'1':'name1', '2':'name2','hello':'world",'animal':'dog',...'20':'name20'}
new_dict=dict(filter(lambda x: x[1] in name,dicti.items()))
print(new_dict)

output

{'1': 'name1', '2': 'name2',... 20: 'name20'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...