У меня есть список:
row = ["Title", "url", 33, "title2", "keyword"]
Есть ли более питонный способ распаковать эти значения, такие как:
title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]
4 ответа
Что-то вроде этого ?
>>> row = ["Title", "url", 33, "title2", "keyword"]
>>> title, url, price, title2, keyword = row
Также обратите внимание, что ваш пример потерпит неудачу с IndexError (списки Python начинаются с нуля).
РЕДАКТИРОВАТЬ: вышеупомянутое примечание было написано до исправления примера OP ...
Фактически, python автоматически распаковывает контейнеры, когда переменные разделяются запятыми. Это назначает каждый элемент в row
переменным слева:
title, url, price, title2, keyword = row
После этого присваивания title
имеет значение «Заголовок», price
имеет значение 33 и т. Д.
Также, если вам нужно всего несколько первых переменных, в Python 3 вы можете использовать:
row = ["Title", "url", 33, "title2", "keyword"]
title, url, *_ = row
Это хороший способ извлечь несколько первых значений без использования явных индексов.
Вы также можете легко распаковать его в класс или 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
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.