2017-09-25 1 views
1
nested = {'a':{'aa':1, 'bb':2}, 'b':{'aa':3, 'bb':4}} 

Comment obtenir le result comme un sous-ensemble de nested où la seconde clé est « aa »:sous-ensemble un dictionnaire imbriqué

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

J'ai essayé celui-ci, mais ne fonctionne pas:

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

Merci d'avance.

+0

Que voulez-vous dire un « sous-ensemble par référence? " –

+0

Ce serait "mieux" si le résultat n'est qu'une référence au dictionnaire original. donc quand je change de résultat, l'imbriqué sera modifié. Je vais l'éditer pour enlever ce mot. –

+1

Donc, vous voulez un sous-ensemble * vue * sur l'original 'dict'. Il n'y a pas de fonctionnalité intégrée dans Python. –

Répondre

2

Vous pouvez utiliser une compréhension dictionnaire imbriqué avec un filtre pour la dict intérieure, (cela va créer un nouveau dictionnaire au lieu de modifier l'original):

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