Учитывая, что у меня есть два списка:
l1 = ['a', 'c', 'b', 'e', 'f', 'd']
l2 = [
'x','q','we','da','po',
'a', 'el1', 'el2', 'el3', 'el4',
'b', 'some_other_el_1', 'some_other_el_2',
'c', 'another_element_1', 'another_element_2',
'd', '', '', 'another_element_3', 'd4'
]
и мне нужно создать словарь, где ключи - это те элементы из второго списка, которые находятся в первом, а значения - это списки элементов, найденных между "ключами":
result = {
'a': ['el1', 'el2', 'el3', 'el4'],
'b': ['some_other_el_1', 'some_other_el_2'],
'c': ['another_element_1', 'another_element_2'],
'd': ['', '', 'another_element_3', 'd4']
}
Какой еще более питонический способ сделать это?
В настоящее время я делаю это:
# I'm not sure that the first element in the second list
# will also be in the first so I have to create a key
k = ''
d[k] = []
for x in l2:
if x in l1:
k = x
d[k] = []
else:
d[k].append(x)
Но я вполне уверен, что это не лучший способ сделать это, и он тоже не выглядит красивым :)
Изменение: Мне также нужно указать, что список не требуется, и ни второй список не должен начинаться с элемента из первого.