【问题标题】:trying to create a dict for verifying an alien dictionary试图创建一个字典来验证外星人字典
【发布时间】:2020-01-26 05:10:02
【问题描述】:

我正在尝试解决一个问题,即我的程序将根据单词列表是否按照自定义或“外星人”字典的顺序返回 true 或 false。 假设这是给定的顺序: order = "hlabcdefgijkmnopqrstuvwxyz"

我试图创建一个字典,其中字母的 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 = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz" 输出:true 解释:在这种语言中,由于 'h' 在 'l' 之前,那么序列是有序的.输入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz" 输出:false 解释:由于在这种语言中 'd' 出现在 'l' 之后,因此 words[0] > words[1 ],因此序列是未排序的。
  • 输入:words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz" 输出:false 解释:前三个字符“app”匹配,第二个字符串较短(大小.) 根据词典规则"apple" > "app",因为'l' > '∅',其中'∅'定义为小于其他任何字符的空白字符

标签: python python-3.x python-2.7 dictionary hashmap


【解决方案1】:

如果words = ['apple', 'app']iint,那么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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2021-03-09
    • 2019-03-15
    • 1970-01-01
    • 2016-06-14
    • 2018-09-18
    • 2017-04-14
    相关资源
    最近更新 更多