Django,使用Dict列表进行响应

时间:2018-07-11 19:03:16

标签: python django

我希望能够使用如下所示的字典列表进行回复

encuestas$rango_edad <- sapply(encuestas$edad,get_rango_edad)

但该响应返回:

  

TypeError:列表索引必须是整数或切片,而不是str

使用python 3.6和Django 1.11

4 个答案:

答案 0 :(得分:0)

错误来自您致电

的事实
bio_dict['subject'] and bio_dict['value']

但是bio_dict是一个列表。这是访问词典而不是列表的语法。

现在,为了获得想要的输出,可以像这样使用dict理解,

response = {item['subject']:item['value'] for item in bio_dict} 

这样,您就可以尝试使用类似的语法,但是现在您可以对bio_dict中的每个字典进行迭代,并访问它们。

答案 1 :(得分:0)

因此,如果您查看@class SBPulseTag,它是一个列表,并且作为例外,列表索引必须是整数或切片。

这样做- bio_dict 您实质上是将字符串作为列表索引传递。

您首先需要访问列表-

bio_dict['subject'],然后,您将能够访问列表中包含的词典。

由于列表中有3个字典,bio_dict[0]将为您提供第一个字典-

bio_dict[0]

{'subject' : 'Name', 'value' : 'MyName'将使您获得第二个字典-

bio_dict[1]

,依此类推。

您可以通过-

访问dict元素

{'subject' : 'Birth Date', 'value' : '1998-1-1'}

以此类推。

根据用例,您可以使用-

之类的循环
bio_dict[0]['subject']

答案 2 :(得分:0)

尝试仅传递dict而不是完整的键和值。参见Variables and lookups

bio_dict = {
              'name' : 'MyName', 
              'birth_date': '1998-1-1',
              'sex' : 'M'
           }

def index(request):
    response = { bio_dict: 'bio_dict' }
    return render(request, 'page.html', response)

并在您的模板page.html中,使用以下格式呈现html模板中的值:

{% for my_key, my_value in bio_dict.items %}

  <p> {{ my_key }} : {{ my_value }} </p>

{% endfor %}

答案 3 :(得分:0)

如上所述,bio_dict是一个列表,而不是字典。 如果要为视图创建上下文字典response,则可以执行以下操作:

bio_dict = [{'subject' : 'Name', 'value' : 'MyName'},\
{'subject' : 'Birth Date', 'value' : '1998-1-1'},\
{'subject' : 'Sex', 'value' : 'M'}]
def index(request):
   response = {}
   for item in bio_dict:
        # populate response = {}
        response[item['subject']] = item['value']
   return render(request, 'page.html', response)