Мне нужно преобразовать словарь в форме {1: ['a', 'b', 'c', 'd'], 2: ['e', 'f', 'g', 'h']}
в список кортежей в форме [(1, 'a', 'b', 'c', 'd'), (2, 'e', 'f', 'g', 'h')]
.
Когда я пробую это:
dictionary = {1: ['a', 'b', 'c', 'd'], 2: ['e', 'f', 'g', 'h']}
list_of_tuples = [(k, v) for k, v in dictionary.items()]
я получил
list_of_tuples = [(1, ['a', 'b', 'c', 'd']), (2, ['e', 'f', 'g', 'h'])]
и мне нужно
list_of_tuples = [(1, 'a', 'b', 'c', 'd'), (2, 'e', 'f', 'g', 'h')]
Пытаться
list_of_tuples = [(k, *v) for k, v in dictionary.items()]
*v
распаковывает v
.
Рад, что это помогло! Вы можете нажать галочку, чтобы отметить этот вопрос как решенный.
Это работает и для меня:
list_of_tuples = [(key,*dictionary[key]) for key in dictionary]
Это приводит к ненужному поиску по словарю (dictionary[key]
). Используя метод .items()
, вы получаете ключ и значение за один раз.
Хорошая мысль @MannyC Однако из любопытства я использовал модуль времени и сравнил обе строки по отдельности, каждую по 1000 раз. В первой строке использовалось 0,00146 секунды, а во второй — 0,00097 секунды. Я считаю, что интересные результаты заслуживают того, чтобы ими поделились.
Я думаю, разница становится заметна, когда dictionary
очень большой и со множеством клавиш.
Огромное спасибо за такой быстрый ответ и такой эффективный ответ! Я решил свою проблему!