пытаясь создать диктат для проверки словаря инопланетян - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь решить проблему, при которой моя программа возвращала бы значение true или false в зависимости от того, упорядочен ли список слов в соответствии с пользовательским или «чужим» словарем.Предположим, что это порядок, указанный:) однако я продолжаю получать следующую ошибку:

TypeError: строковые индексы должны быть целыми числами

def isAlienSorted(self, words, order):

    values = []
    for i in range(0,len(order)):
        values.append(i)


    orderDict = dict(zip(order,values))
    orderDict[None] = 0

    for i in range(0,len(words) - 2):
        if len(words[i])>len(words[i+1]):
            return False
    for i in range(0,len(words) - 2):
        for j in words[i]:
            if orderDict[words[i][j]]>orderDict[words[i+1][j]]:
                return False

    return True    

прошел только 1 тестовый пример:

1/115 тестовых случаевпередано.

Почему я получаю эту ошибку во время выполнения?

TypeError: string indices must be integers

Ошибка выдается в следующей строке:

(Line 21) if orderDict[words[i][j]]>orderDict[words[i+1][j]]: 

1 Ответ

0 голосов
/ 26 сентября 2019

Если words = ['apple', 'app'] и i - это int, тогда words[i] будет элементом списка.если i = 0, то words[i] == 'apple'.Теперь, когда вы говорите,

for j in words[i]:

j будет ['a', 'p', 'p', 'l', 'e'].words[i][j] будет что-то вроде: words[0]['a']: 'apple'['a'], что является TypeError

То, что вы хотите, это просто j не words[i][j]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...