Python find word can be built with characters

Viewed 134

I want to find out if the word word 'apple'(word_list) can be built with char_list1 but can not be built with char_list2

word_list=['a','p','p','l','e']
char_list1=['p','a','l','f','p','e']
char_list2=['p','a','l','f','e']

because char_list2 is missing a p

2 Answers

If you use Counter you can easily compare the counts of occurrences of each letter

from collections import Counter
word = Counter(word_list)
char = Counter(char_list1)

match = True
for k, v in word.items():
    print(k, v, char[k])
    if char[k] < v:
        match = False
        break

A slight variation on David's answer:

from collections import Counter
def check(word_list, char_list):
    word = Counter(word_list)
    char = Counter(char_list1)
    return all(v <= char[k] for k, v in word.items())
Related