您可以使用Counter,计算给定单词中的所有字母,并从要检查的单词中减去字母,如下所示:
from collections import Counter
def check_in_given_word(given_word, to_check):
given_word_counter = Counter(given_word)
word_counter = Counter(to_check)
given_word_counter.subtract(word_counter)
#if any -ve letter count is found, it is not in given_word
if any([c < 0 for c in given_word_counter.values()]):
# do whatever you want, or return False
print "{} is NOT in {}".format(to_check, given_word)
else:
print "{} is in {}".format(to_check, given_word)
# print the counter for your info
print given_word_counter
示例用法:
check_in_given_word('lime-tree', 'tree')
tree is in lime-tree
Counter({'e': 1, 'i': 1, 'm': 1, '-': 1, 'l': 1, 'r': 0, 't': 0})
check_in_given_word('lime-tree', 'reel')
reel is in lime-tree
Counter({'e': 1, 'i': 1, 'm': 1, '-': 1, 't': 1, 'l': 0, 'r': 0})
check_in_given_word('lime-tree', 'hello')
hello is NOT in lime-tree
Counter({'e': 2, 'i': 1, 'm': 1, '-': 1, 'r': 1, 't': 1, 'l': -1, 'o': -1, 'h': -1})
check_in_given_word('lime-tree', 'reeeeel')
reeeeel is NOT in lime-tree
Counter({'i': 1, 'm': 1, '-': 1, 't': 1, 'l': 0, 'r': 0, 'e': -2})
如您所见,所有字母都应该是 +ve 值。如果发现任何负值,则要检查的单词不在您给定的单词中。