2017-09-25 131 views
1
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中沒有這樣的內置功能。 –

回答

2

您可以使用嵌套的字典的理解與過濾器內快譯通,(這將創建一個新的字典,而不是修改原始一個):

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