Учитывая, что у меня есть два списка, например:
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)
Но я совершенно уверен, что это не лучший способ сделать это, и это также не выглядит красиво :)
Изменить: я также должен упомянуть, что список не обязательно упорядочен, и второй список не должен начинаться с элемента из первого.
l2
сортируется? - person zwer   schedule 15.05.2018l2
всегда начинаться с элементаl1
(то естьa
вa1
.) - person Roelant   schedule 15.05.2018l2
не начинается с элемента изl1
? - person zwer   schedule 15.05.2018