给定以下数据结构:
out = {
'foo': { 'public':{}, 'private':{}, 'other':{} },
'bar': { 'public':{}, 'private':{}, 'other':{} }
}
我正在尝试切出部分子结构以创建一个新的dict
. 我的用途是用除了标记的所有数据来响应请求private
。
做相反的事情是微不足道的:
response = {x,y['private'] for x,y in out.iteritems()}
它为每个构造一个字典,foo
并且bar
只包含标记的数据private
。但是标准库(也许是 itertools)中是否有一些功能会产生以下内容:
out = {
'foo': { 'public':{}, 'other':{} },
'bar': { 'public':{}, 'other':{} }
}
我尝试了以下方法:
{x:(y['public'], y['other']) for x,y in out.iteritems()}
尽管我更愿意不使用元组,并且不明确命名每个子结构,因为这不是可重用或可扩展的。
def remove(name, obj):
return {x:y for x,y in obj.iteritems() if x is not name}
{x:remove('private',y) for x,y in out.iteritems()}
这似乎有效,但有更好的方法吗?有任何想法吗?