[英]Check if all letters of string are contained in list of letters in Python
我正在尝试在Python中编写Scrabble有效单词检查器函数。 我需要查看列表中是否包含单词中的所有字母,但是一旦匹配了字母,就无法再次使用它。 因此,如果我的单词是'test'并且列表是['t','a','e','s'],则应该返回False,因为我需要2 t。
这是我的主意:
def validWord(word, letterList):
for x in word:
if x in letterList:
letterList = letterList.remove(x)
else:
return False
return True
但是,在编译时会收到此错误:TypeError:类型为'NoneType'的arument不可迭代
现在,我猜测“ if letterList中的x”只能运行一次,而不能迭代。 因此,现在我希望有人可以向正确的方向发展。 就我而言,这只是为了娱乐,我将使用它来创建“与朋友作弊的单词”并显示我的朋友。
谢谢!
list.remove
返回None
并且您将其分配给letterList
。 在下一次迭代中, if x in None
变为,其中in
运算符尝试迭代None
并因该错误而失败。 所以,改变
letterList = letterList.remove(x)
至
letterList.remove(x)
你可以这样解决这个问题
from collections import Counter
def validWord(word, letterList):
word2, word1 = Counter(word), Counter(letterList)
return all(word2[k] <= word1.get(k, 0) for k in word2)
print validWord("test", ["t", "a", "e", "s"]) # False
print validWord("test", ["t", "e", "t", "s"]) # True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.