Создайте словарь Python, содержащий определенные пары ключ-значение из другого словаря

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

d = {'foo': True, 'bar': 42, 'baz': '!'}

a = {'foo': d['foo'], 'bar': d['bar']}
b = {'foo': d['foo'], 'baz': d['baz']}
c = {'bar': d['bar'], 'baz': d['baz']}

Конечно, есть способ лучше выразить это. На самом деле я читал документацию в надежде, что метод словаря copy принимает ключи, которые будут включены в новый словарь:

# I'd hoped that something like this would work...
a = d.copy('foo', 'bar')
b = d.copy('foo', 'baz')
c = d.copy('bar', 'baz')

Я мог бы написать функцию для этой цели:

copydict = lambda dct, *keys: {key: dct[key] for key in keys}

a = copydict(d, 'foo', 'bar')
b = copydict(d, 'foo', 'baz')
c = copydict(d, 'bar', 'baz')

Есть ли лучшее решение, чем выше?

7
задан davidchambers 18 February 2012 в 11:48
поделиться