我希望能够使用如下所示的字典列表进行回复
encuestas$rango_edad <- sapply(encuestas$edad,get_rango_edad)
但该响应返回:
TypeError:列表索引必须是整数或切片,而不是str
使用python 3.6和Django 1.11
答案 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)