繁体   English   中英

检查字符串的所有字母是否都包含在Python的字母列表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM