Python, разделить элементы кортежа на отдельные вещи
у меня есть Кортеж в Python, который выглядит так:
tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
и я хочу разделить его, чтобы я мог получить каждый элемент от tuple independent, чтобы я мог сделать что-то вроде этого:
domain = "sparkbrowser.com"
level = 0
url = "http://facebook.com/sparkbrowser"
text = "Facebook"
или что-то подобное этому, мне нужно, чтобы каждый элемент был разделен. Я пробовал с .split(",")
на кортеж, но я получил ошибку, которая говорит, что кортеж не раскололи вариант
любая помощь или совет приветствуется
4 ответов
Python может распаковывать последовательности естественным образом.
domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
лучше не использовать tuple
в имя переменной.
можно использовать split(',')
Если у вас была строка типа 'sparkbrowser.com,0,http://facebook.com/sparkbrowser,Facebook'
, что вам нужно преобразовать в список. Однако у вас уже есть кортеж, поэтому здесь нет необходимости.
если вы знаете точное количество компонентов, вы можете распаковать его непосредственно
the_tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
domain, level, url, text = the_tuple
Python3 имеет мощный синтаксис распаковки. Чтобы получить только domain
и text
вы могли бы использовать
domain, *rest, text = the_tuple
rest
будет содержать [0, 'http://facebook.com/sparkbrowser']
>>> domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
>>> domain
'sparkbrowser.com'
>>> level
0
>>> url
'http://facebook.com/sparkbrowser'
>>> text
'Facebook'
альтернативой для этого является использование collections.namedtuple
. Это облегчает доступ к элементам кортежей.
демо:
>>> from collections import namedtuple
>>> Website = namedtuple('Website', 'domain level url text')
>>> site1 = Website('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
>>> site2 = Website('foo.com', 4, 'http://bar.com/sparkbrowser', 'Bar')
>>> site1
Website(domain='sparkbrowser.com', level=0, url='http://facebook.com/sparkbrowser', text='Facebook')
>>> site2
Website(domain='foo.com', level=4, url='http://bar.com/sparkbrowser', text='Bar')
>>> site1.domain
'sparkbrowser.com'
>>> site1.url
'http://facebook.com/sparkbrowser'
>>> site2.level
4