子集嵌套的字典

问题描述:

nested = {'a':{'aa':1, 'bb':2}, 'b':{'aa':3, 'bb':4}} 

如何获得resultnested一个子集,其中的第二个关键是“AA”:子集嵌套的字典

result = {'a':{'aa':1}, 'b':{'aa':3}} 

我想这一个,但没有奏效:

result = {k1:{k2:nested[k1][k2]} for k1 in nested.keys() & k2 in ['aa']} 

预先感谢您。

+0

你是什么意思了“参照子集? “ –

+0

如果结果只是对原始字典的引用,那将是“更好”。所以当我改变结果时,嵌套将被改变。我会编辑它来解决这个问题。 –

+1

所以,你基本上想在原始的'dict'上想要一个subset- * view *。 Python中没有这样的内置功能。 –

您可以使用嵌套的字典的理解与过滤器内快译通,(这将创建一个新的字典,而不是修改原始一个):

{k1: {k2: v2 for k2, v2 in v1.items() if k2 == 'aa'} for k1, v1 in nested.items()} 
# {'a': {'aa': 1}, 'b': {'aa': 3}}