Подтвердить что ты не робот

Получить подмножество словаря Python

У меня есть словарь:

{'key1':1, 'key2':2, 'key3':3}

Мне нужно передать подмножество этого словаря в сторонний код. Он хочет только словарь, содержащий ключи ['key1', 'key2', 'key99'], и если он получит другой ключ (например, 'key3'), он взрывается в неприятном беспорядке. Код, о котором идет речь, вышел из моего контроля, поэтому я остался в положении, когда мне нужно очистить словарь.

Какой лучший способ ограничить словарь набором ключей?

Учитывая пример словаря и разрешенных клавиш выше, я хочу:

{'key1':1, 'key2':2}
4b9b3361

Ответ 1

In [38]: adict={'key1':1, 'key2':2, 'key3':3}
In [41]: dict((k,adict[k]) for k in ('key1','key2','key99') if k in adict)
Out[41]: {'key1': 1, 'key2': 2}

В Python3 (или Python2.7 или новее) вы можете сделать это с помощью dict-comprehension:

>>> {k:adict[k] for k in ('key1','key2','key99') if k in adict}
{'key2': 2, 'key1': 1}

Ответ 2

dict(filter(lambda i:i[0] in validkeys, d.iteritems()))