2016-04-27 5 views
2

私は関数を返すために複数のdictを連結したいと思います。Pythonの連合辞典

def get_params(request, active_id): 

    tab_parameters = [ 
     shadow(active_id), 
     light_parameter(active_id) 
    ] 

    parameters = { 
     'id': active_id, 
     'parameters': tab_parameters 
    } 

    return response.HttpResponse(json.dumps(parameters), 'application/json') 


def light_parameter(active_id): 
    active_lights = LightParameter.objects.filter(id=active_id).all() 

    list_parameters = [] 
    for active_light in active_lights: 
     list_parameters.append({ 
       'name': 'light', 
       'color': active_light.color, 
     }) 

    return list_parameters 

期待される結果は次のとおりです。

{ 
    "id": 1, 
    "parameters": [ 
     { 
      "name": "shadow" 
     }, 
     { 
      "color": 1, 
      "name": "light" 
     }, 
     { 
      "color": 2, 
      "name": "light" 
     } 
} 

私の実際の結果は、([]で)です:

{ 
    "id": 1, 
    "parameters": [ 
     { 
      "name": "shadow" 
     }, 
     [ 
      { 
       "color": 1, 
       "name": "light" 
      }, 
      { 
       "color": 2, 
       "name": "light" 
      } 
     ] 
} 

任意のアイデア?私はすでに組合、更新、連結を使用しようとしましたが、成功しませんでした。

ありがとう!

答えて

1

これには実際にはdictが含まれていません。 tab_parametersを構成するリストを正しくマージする必要があります。

tab_parameters = [shadow(active_id)] + light_parameter(active_id) 
+0

素晴らしい!どうもありがとう :) – Chaoxys