I have a list:
row = ["Title", "url", 33, "title2", "keyword"]
Is there a more pythonic way to unpack this values like:
title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]
I have a list:
row = ["Title", "url", 33, "title2", "keyword"]
Is there a more pythonic way to unpack this values like:
title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]
Something like this?
>>> row = ["Title", "url", 33, "title2", "keyword"]
>>> title, url, price, title2, keyword = row
Also if you need only few first variables, in Python 3 you can use:
row = ["Title", "url", 33, "title2", "keyword"]
title, url, *_ = row
It's a nice way to extract few first values without using explicit indices
In fact, python automatically unpacks containers when variables are separated by commas. This assigns each element in row
to the variables on the left:
title, url, price, title2, keyword = row
After this assignment, title
has the value of "Title", price
has the value of 33, etc.
You could also unpack it easily to a class or 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
Another way simple tuple/list packing - Note ',' after *row
*row, = ["Title", "url", 33, "title2", "keyword"] # creates a tuple of row elements
title, url, price, title2, keyword = row # list unpacking unpacked here
for i in range(len(row)):
print(row[i])
print()
print(title)
Title
url
33
title2
keyword
Title