Search code examples
pythonstringfindcontain

Search strings in list containing specific letters in random order


I am writing a code in Python 2.7 in which I have defined a list of strings. I then want to search this list's elements for a set of letters. These letters must be in random order. i.e. search the list for every single letter from input. I have been google'ing around but i haven't found a solution.

Here's what i got:

wordlist = ['mississippi','miss','lake','que']

letters = str(aqk)

for item in wordlist:
    if item.find(letters) != -1:
        print item

This is an example. Here the only output should be 'lake' and 'que' since these words contain 'a','q' and 'k'. How can I rewrite my code so that this will be done?

Thanks in advance!

Alex


Solution

  • It would be easy using set():

    wordlist = ['mississippi','miss','lake','que']
    
    letters = set('aqk')
    
    for word in wordlist:
        if letters & set(word):
            print word
    

    Output:

    lake
    que
    

    Note: The & operator does an intersection between the two sets.