Considérant que j'ai deux listes comme :
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'
]
et j'ai besoin de créer un dictionnaire où les clés sont les éléments de la deuxième liste qui sont trouvés dans la première et les valeurs sont des listes d'éléments trouvés entre les "clés", par exemple :
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']
}
Quelle est la façon la plus pythique de faire cela ?
Actuellement, je fais ceci :
# 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)
Mais je suis certain que ce n'est pas la meilleure façon de faire et que ce n'est pas très joli :)
Éditer : Je dois également mentionner qu'aucune liste n'est nécessairement ordonnée et que la seconde liste ne doit pas non plus commencer par un élément de la première.