next_dict = {'D': ['E'], 'B': ['D'], 'A': ['C'], 'C': ['C'], 'E': ['D']}
initial_list = ['B', 'D', 'A', 'C', 'E']
[list(i) for _, i in groupby(sorted(initial_list, key=next_dict.get),
    next_dict.get)]
Divide list to multiple lists based on elements value