2015-03-01 3 views
0

Я пытаюсь создать функцию, которая примет символ и гистограмму и добавит экземпляр этого символа к гистограмме. Мой код до сих пор, как это:Гистограммы: «TypeError, индексы списка должны быть целыми, а не str»

def add_to_hist(character, histogram): 
    """Takes a character and a histogram and adds an occurrence 
     of that character to the histogram. 

    string, list -> list""" 
    for c in character: 
     if c not in histogram: 
      histogram[c] = 1 
     else: 
      histogram[c] = histogram[c]+1 
    return histogram 

Каждый раз, когда я пытаюсь запустить код он возвращается с TypeError: list indices must be integers, not str. Может ли кто-нибудь помочь мне понять это? Мой код на самом деле может быть совершенно неправильным, я очень новичок в этом. Заранее спасибо!

+0

Не могли бы вы добавить определение того, что такое «гистограмма»? Проблема заключается в том, что 'histogram' является' list', а 'c' является символом. Вы пытаетесь сделать '[1, 2, 3] ['a']', что недопустимо (для индексации списка вам нужно целое число, а не символ). Может быть, вы хотите, чтобы 'histogram' была' dict' вместо? Вот почему я думаю, что было бы хорошо видеть, как используется «гистограмма». – BorrajaX

ответ

0

Эта ошибка происходит потому, что вы пытаетесь присвоить ключ к list и list только могут быть проиндексированы intenger list[0], list[1], так далее. Таким образом, hinstogram должен быть dict не list

Убедитесь, что при вызове метода add_to_hist, пройти Dict. Вы можете инициализировать в Dict таким образом:

histogram = {} 

ОБНОВЛЕНО

Основываясь на ваш комментарий, вы не можете пройти [['B',1],['a',3],['n',2],['!',1]], как парам в add_to_his, потому что это не ДИКТ. Это должно быть {'B':1,'a':3,'n':2,'!':1}

+0

Это избавляет от ошибки, но если я запустил программу с помощью add_to_hist ('a', [['B', 1], ['a', 3], ['n', 2], ['!' , 1]]), он возвращает {'a': 1}, а не добавляет его к гистограмме и возвращает все это? – lilbanili

+0

Я имею в виду '[['B', 1], ['a', 3], ['n', 2], ['!', 1]]' это не дикт, вам нужно передать dict to 'add_to_his', он должен быть таким:' {'B': 1, 'a': 3, 'n': 2, '!': 1} ' – levi

+0

Ooooh okay, который исправил его. Спасибо! – lilbanili

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