我有一些代码看起来像这样:
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')
有没有更好的解决方案呢?
a
,b
和c
传递给Django的urlencode
函数(就像urllib.urlencode
一样,它接受一个字典)。 - davidchambers