Распаковать список переменных
У меня есть список:
row = ["Title", "url", 33, "title2", "keyword"]
Есть ли более pythonic способ распаковать эти значения, например:
title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]
Ответы
Ответ 1
Что-то вроде этого?
>>> row = ["Title", "url", 33, "title2", "keyword"]
>>> title, url, price, title2, keyword = row
Также и для записи обратите внимание, что ваш пример завершится с индексом IndexError (списки Python основаны на нуле).
EDIT: вышеупомянутая записка была написана до того, как был установлен пример OP...
Ответ 2
Фактически, python автоматически распаковывает контейнеры, когда переменные разделяются запятыми. Это присваивает каждому элементу в row
переменные слева:
title, url, price, title2, keyword = row
После этого назначения title
имеет значение "Заголовок", price
имеет значение 33 и т.д.
Ответ 3
Вы также можете легко распаковать его в класс или namedtuple
:
from collections import namedtuple
row = ["Title", "url", 33, "title2", "keyword"]
Entry = namedtuple("Entry", "title url price title2 keyword")
new_entry = Entry(*row)
print(new_entry.title) # Title
Ответ 4
Также, если вам нужно всего несколько первых переменных, в Python 3 вы можете использовать:
row = ["Title", "url", 33, "title2", "keyword"]
title, url, *_ = row
Это хороший способ извлечь несколько первых значений без использования явных индексов