Как объединить значения-списки словаря в список по списку ключей в python?

Есть словарь с тремя списками в значениях и список с ключами. Как сделать список элементов значений словарей по ключам из списка ключей?

list_keys = ['first', 'second', 'third', 'first', 'second', 'first', 'second', 'first', 'third', 'second', 'third']

dict = {
    'first': ['Darkness ', 'darkness; ', 'can do ', 'cannot drive '],
    'second': ['cannot drive ', 'only light ', 'that. Hate ', 'only love '],
    'third': ['out ', 'out hate; ', 'can do that.']
}

Должна получиться цитата известного человека, если сложить строки из словаря следуя списку ключей.

Заранее спасибо за помощь!


Ответы (2 шт):

Автор решения: CrazyElf

Только я переименовал словарь. Нехорошо называть свои объекты так же, как называются встроенные объекты питона, потом сюрприз будет:

list_keys = ['first', 'second', 'third', 'first', 'second', 'first', 'second', 'first', 'third', 'second', 'third']

dict_lists = {
    'first': ['Darkness ', 'darkness; ', 'can do ', 'cannot drive '],
    'second': ['cannot drive ', 'only light ', 'that. Hate ', 'only love '],
    'third': ['out ', 'out hate; ', 'can do that.']
}

for key in list_keys:
    print(dict_lists[key].pop(0), end='')

Вывод:

Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.

Ну или вот однострочник:

text = ''.join(dict_lists[key].pop(0) for key in list_keys)

P.S. Только учтите, что этот код меняет содержимое словаря (очищает списки), так что если словарь этот вам вдруг понадобится дальше, то нужно предварительно сделать "глубокую копию" и делать вышеописанное уже с ней:

from copy import deepcopy

dict_copy = deepcopy(dict_lists)
→ Ссылка
Автор решения: Zhihar

вам это что ли надо?

print(''.join(dict[key].pop(0) for key in list_keys))

или чуть с извратом:

print(*map(lambda key: dict[key].pop(0), list_keys), sep='')
→ Ссылка