Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅当项目的外观数匹配时,才检查列表是否是另一个列表的子集_Python_Python 3.x_List - Fatal编程技术网

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")