2016-03-29 14 views
0

私は、小さなネストされたdict(最終的には要求のペイロードになります)に入れるために大きな辞書からデータを抽出できる関数を作成しようとしています。 私は、payload dict構造体にNoneを指定し、デフォルト値にはinfo_jsonからデータを取り込みます。しかし、私はエラーPythonは1つのフラット辞書からネストされたDictにデータを抽出します

def extract_payload(self, info_json): 
     info_dict = json.loads(info_json) 
     payload = {"service": None, "current": None, 
        "product1": {"id": None, "id2": None, 
             "name": None, 
             "method": "constant_value"}, 
        "product2": {"id": None, "id2": None, 
               "name": None, 
               "method": None, "always_false": False}, 
        "usage": {"usage1": None, "usage2": None, "usage3": None, 
            "usage4": 2066} 

     for key,value in payload.items(): 
      if value is not None: 
       for sub_key in value: 
        value = info_dict.get(sub_key) 
        payload['sub_key'] = value 
      else: 
       value = info_dict.get(key) 
       payload['key'] = value 
     return payload 

答えて

1

「辞書を反復処理中にサイズを変更し、」ペイロードの最後に行方不明}があり得ます。ループごとに同じ時間に[[sub_key]]ペイロードを上書きしています。payload[sub_key]else payload[key] = value

と同じである必要があります。
関連する問題