2015-12-19 4 views
0

Я нашел «TypError», и я больше не знаю, как его решить. Пожалуйста, помогите. Я буду очень благодарен за объяснение, если это возможно.TypeError: строковые индексы должны быть целыми числами - Python

Мой код:

import json 

input = '''{ 
    "text":"Sample data", 
    "subjects":[ 
    { 
     "id":"A", 
     "quant":10 
    }, 
    { 
     "id":"B", 
     "quant":9 
    }, 
    { 
     "id":"C", 
     "quant":8 
    }, 
    { 
     "id":"D", 
     "quant":7 
    }, 
    { 
     "id":"E", 
     "quant":6 
    }]} 
''' 

info = json.loads(input) 

count = 0 
total = 0 
for item in info: 
    value = item["subjects"][0]["quant"] 
    value = int(value) 
    total += value 
    count += count 

print 'Count: ', count  
print 'Sum: ', total 

Ошибка:

; exit; {u'text': u'Sample data', u'subjects': [{u'quant': 10, u'id': u'A'}, {u'quant': 9, u'id': u'B'}, {u'quant': 8, u'id': u'C'}, {u'quant': 7, u'id': u'D'}, {u'quant': 6, u'id': u'E'}]} Traceback (most recent call last): File "/Users/macme/Documents/Python/test_Json.py", line 61, in value = item["subjects"][0]["quant"] TypeError: string indices must be integers logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.

[Process completed]

+0

Извините, форматирование окна с ошибкой. – RBB

ответ

4

info является ДИКТ, но вы переборе его как список. Я думаю, вы хотите итерации на info['subjects'].

+0

Спасибо, Дэн. Ты действительно поможешь мне, потому что теперь я понял, почему я получил эту ошибку. Большое спасибо! – RBB

1

Ваш for цикл не работает, как вы думаете.

for item in info петли по клавишам вашего словаря, то есть над «текстом» и «темами». Затем вы пытаетесь индексировать эти строки с другой строкой, которая обязательно завершится неудачей.

Смежные вопросы