-1

我是编码新手,我无法让这个功能正常工作。

def isValidWord(word, hand, wordList):
    """
    Returns True if word is in the wordList and is entirely
    composed of letters in the hand. Otherwise, returns False.

    Does not mutate hand or wordList.

    word: string
    hand: dictionary (string -> int)
    wordList: list of lowercase strings
    """
    wordDic = {}
    if word not in wordList:    
        return False   
    for letter in word:
        if letter in wordDic:
            wordDic[letter] += 1
        else:
            wordDic[letter] =  1
    if wordDic[letter] > hand[letter]: # 
        return False
    return True

我想要做的是与字典值比较一个字母在 wordDic 中出现的次数以及它在手中出现的次数。但我不断收到“TypeError:列表索引必须是整数,而不是 str”。有人可以解释我哪里出错了吗?

4

2 回答 2

1

你的问题肯定是这一行:

if wordDic[letter] > hand[letter]:

问题是您用来索引您letter的字符 ( ) (显然是 a ,而不是您期望的 a )。strhandlistdict

于 2013-03-08T13:51:20.590 回答
1

问题是hand(可能)是一个列表,而不是字典,并且您正尝试使用letterwhich is a来访问它str。列表不能使用字符串进行索引,因此TypeError.

有关更多信息,请参阅列表上的Python 文档


hand绝对是一个列表。测试代码:

>>> l = [1,2]
>>> l['a']
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    l['a']
TypeError: list indices must be integers, not str
于 2013-03-08T13:51:45.263 回答