Python 仅当项目的外观数匹配时,才检查列表是否是另一个列表的子集
我知道子集以及它们如何发现一个列表是否与另一个列表匹配,但我意识到我的代码不能解释重复的字母Python 仅当项目的外观数匹配时,才检查列表是否是另一个列表的子集,python,python-3.x,list,Python,Python 3.x,List,我知道子集以及它们如何发现一个列表是否与另一个列表匹配,但我意识到我的代码不能解释重复的字母 word = ["b", "e", "e"] given_letters = ["b", "e", "p", "w"] if set(word).issubset(given_letters): print("Within the given letters' limits.") 这将打印出我放置的句子,但我不希望打印出来,因为它不是完全匹配的 基本上,我希望它接受['b','e',],因
word = ["b", "e", "e"]
given_letters = ["b", "e", "p", "w"]
if set(word).issubset(given_letters):
print("Within the given letters' limits.")
这将打印出我放置的句子,但我不希望打印出来,因为它不是完全匹配的
基本上,我希望它接受['b','e',],因为它匹配“e”出现的次数,但拒绝['b','e','e',],因为该列表比“给定字母”多包含一个“e”
有人有什么想法吗?这应该会有帮助
word = ["b", "e", "e"]
given_letters = ["b", "e", "p", "w"]
def check(given_letters, word):
for i in set(given_letters):
if i in word:
if given_letters.count(i) != word.count(i): #Check if element count is greater than 1.
return False
return True
print(check(given_letters, word))
我会建议用
如果我答对了你的问题,而你正在寻找一条航线:
word = ["b", "e", "e"]
given_letters = ["b", "e", "p", "e","w"]
if(all(True if word.count(item) <= given_letters.count(item) else False for item in word)):
print("Within the given letters' limits.")
else:
print ("Whatever you want")
当你把一个列表变成一个集合时,你会丢失所有的副本。而且当给定字母=[b,e,e,p,w]@vishes\u shell时,它肯定会失败。谢谢更新的代码片段。为什么我要在word中输入:?这将导致误报,这是一个关于^2的解决方案。如果word.countitem,则应使用而不是.count.True
word = ["b", "e", "e"]
given_letters = ["b", "e", "p", "e","w"]
if(all(True if word.count(item) <= given_letters.count(item) else False for item in word)):
print("Within the given letters' limits.")
else:
print ("Whatever you want")