Python 正在尝试创建用于验证外来词典的dict
我正在尝试解决一个问题,我的程序将根据单词列表是否符合自定义或“外来”词典的顺序返回true或false。 假设这是给定的顺序: order=“hlabcdefgijkmnopqrstuvxyz” 我试图创建一个dict,其中字母的ascii值为键,值为0到(len(order)-1) 但是,我不断得到以下错误: TypeError:字符串索引必须是整数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
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”>∅', 在哪里∅' 被定义为小于任何其他字符的空白字符。