You must sort according to the first letter of the words:
list1 = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo']
list2 = ['B', 'A', 'E', 'C', 'D']
out = list(sorted(list1, key=lambda word: list2.index(word[0])))
print(out)
# ['Beta', 'Alpha', 'Echo', 'Charlie', 'Delta']
index
will have to iterate on list2
each time though. It might be more efficient to build a dict giving the index of each letter first, so that we can find the indices in O(1) when sorting:
list1 = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo']
list2 = ['B', 'A', 'E', 'C', 'D']
dict2 = {letter: index for index, letter in enumerate(list2)}
out = list(sorted(list1, key=lambda word: dict2[word[0]]))
print(out)
# ['Beta', 'Alpha', 'Echo', 'Charlie', 'Delta']