仅当项的外观数匹配时,检查列表是否是另一个列表的子集

2024-04-19 06:07:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道子集以及它们如何找到一个列表是否与另一个列表匹配,但我意识到我的代码不能解释重复的字母。你知道吗

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'比'given\u letters'中的多一个'e'。你知道吗

有人有什么想法吗?你知道吗


Tags: the代码列表if字母given子集word
3条回答

这应该会有帮助。你知道吗

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

我建议使用^{}

from collections import Counter

def is_sublist(check_list, base_list):
    base_list_counter = Counter(base_list)
    check_list_counter = Counter(check_list)
    for letter, occurances in check_list_counter.items():
        if occurances > base_list_counter[letter]:
            return False
    return True

assert not is_sublist(["b", "e", "e"], ["b", "e", "p", "w"])
assert is_sublist(["b", "e", "e"], ["b", "e", "e", "p", "w"])

如果我答对了你的问题,而你在找一句台词:

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

相关问题 更多 >