Check if item of list is in [x][0] of other list with comprehension

39 Views Asked by At

this one is driving me crazy. The first list contains filenames without extension. e.g.:

afilenames = [file1, file2, file3]

The second list contains filenames with extensions:

bfiles = [[file1, .exe], [file2, .txt], [file4, ini]]

I know would like to get a list, which returns the files from afilenames, which contains in bfiles.

Expected result:

[file1, file2]

This is my attempt, but it just return bullshit:

[afile for afile in afilenames for bfile in bfiles if afile in bfile[0]]
2

There are 2 best solutions below

0
Hatatister On BEST ANSWER

This should do what you want

files = [file for file, _ in bfiles if file in afilenames]
0
ilamaaa On
x = [a for a in afilenames for b in bfiles if a == b[0]]

your version also worked for me with the example you provided.

x = [afile for afile in afilenames for bfile in bfiles if afile in bfile]

This also worked.