【发布时间】:2012-03-09 14:21:41
【问题描述】:
我有一些看起来像这样的代码:
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?当你需要它时,你可以冷查找 d 中的值。
-
-
@BlaXpirit:你应该写一个只包含“否”的答案。 (用 HTML 注释填充到最小尺寸)这样我们都可以疯狂地投票。
-
如果您有兴趣,我发布了一个相关问题,关于比复制更好:stackoverflow.com/questions/9329537/…
标签: python dictionary