Python 正在尝试创建用于验证外来词典的dict

Python 正在尝试创建用于验证外来词典的dict,python,python-3.x,python-2.7,dictionary,hashmap,Python,Python 3.x,Python 2.7,Dictionary,Hashmap,我正在尝试解决一个问题,我的程序将根据单词列表是否符合自定义或“外来”词典的顺序返回true或false。 假设这是给定的顺序: order=“hlabcdefgijkmnopqrstuvxyz” 我试图创建一个dict,其中字母的ascii值为键,值为0到(len(order)-1) 但是,我不断得到以下错误: TypeError:字符串索引必须是整数 def isAlienSorted(self, words, order): values = [] for i in ra

我正在尝试解决一个问题,我的程序将根据单词列表是否符合自定义或“外来”词典的顺序返回true或false。 假设这是给定的顺序: order=“hlabcdefgijkmnopqrstuvxyz”

我试图创建一个dict,其中字母的ascii值为键,值为0到(len(order)-1) 但是,我不断得到以下错误:

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]]: 

如果
words=['apple','app']
i
int
的,那么
words[i]
将是列表中的一个元素。如果
i=0
,则
words[i]==“苹果”
。现在,当你说

用文字[i]表示j的
j
将是
['a','p','p','l','e']
words[i][j]
将类似于:
words[0]['a']
'apple'['a']
这是一个
类型错误

您想要的只是
j
而不是
words[i][j]

输入:words=[“hello”,“leetcode”],order=“hlabcdefgijkmnopqrstuvxyz”输出:真正的解释:在这种语言中,由于“h”在“l”之前,所以序列被排序。输入:words=[“word”,“world”,“row”],order=“worldabcefghijkmnpqstuvxyz”输出:错误解释:在这种语言中,由于“d”在“l”之后,那么words[0]>words[1],因此序列是未排序的。输入:words=[“apple”,“app”],order=“abcdefghijklmnopqrstuvxyz”输出:错误解释:前三个字符“app”匹配,根据词典编纂规则“apple”>“app”,第二个字符串较短(大小),因为“l”>∅', 在哪里∅' 被定义为小于任何其他字符的空白字符。