2016-04-15 10 views
1

ネストされたdictを削除しようとしています(例:1レベルの深さ:some_dict = {'a':{}, b:{}}すべてすべてゼロでない値なし)
しかし、私はdictを適切に再構成するかどうかわかりません、下記の私のキーエラーになります非ゼロ値のストリップネストdict

def strip_nested_dict(self, some_dict): 
    new_dict = {} 
    for sub_dict_key, sub_dict in some_dict.items(): 
     for key, value in sub_dict.items(): 
      if value: 
       new_dict[sub_dict_key][key] = value 
    return new_dict 
+0

入力例と希望出力 – wim

答えて

1

あなたがそれにアクセスする前に、ネストされた辞書を作成する必要があります。

for sub_dict_key, sub_dict in some_dict.items(): 
    new_dict[sub_dict_key] = {} # Add this line 

    for key, value in sub_dict.items(): 
     # no changes 

new_dict[sub_dict_key][key]が動作するためには、new_dict必見bをe辞書、& new_dict[sub_dict_key]も辞書でなければなりません)

0

これは機能しました。恥ずかしながら、最初に各キーの空を作成する必要はなく、ネストされた値を割り当てることはできません。

def strip_nested_dict(self, some_dict): 
    new_dict = {} 
    for sub_dict_key, sub_dict in some_dict.items(): 
     new_dict[sub_dict_key] = {} 
     for key, value in sub_dict.items(): 
      if value: 
       new_dict[sub_dict_key][key] = value 
    return new_dict 
関連する問題