Получить подмножество словаря Python
У меня есть словарь:
{'key1':1, 'key2':2, 'key3':3}
Мне нужно передать подмножество этого словаря в сторонний код. Он хочет только словарь, содержащий ключи ['key1', 'key2', 'key99']
, и если он получит другой ключ (например, 'key3'
), он взрывается в неприятном беспорядке. Код, о котором идет речь, вышел из моего контроля, поэтому я остался в положении, когда мне нужно очистить словарь.
Какой лучший способ ограничить словарь набором ключей?
Учитывая пример словаря и разрешенных клавиш выше, я хочу:
{'key1':1, 'key2':2}
Ответы
Ответ 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()))