Список одного кортежа, который имеет несколько элементов внутри - PullRequest
1 голос
/ 06 марта 2019

Так что я некоторое время не занимался питоном и не нуждался в этом раньше, поэтому, если я делаю какую-то глупую ошибку, не сходите с ума.

У меня есть список, извлеченный из базы данных SQLite с .fetchall() в конце, и он возвращает список из одного кортежа, и внутри этого кортежа все результаты:

[('Bob', 'Science Homework Test', 'Science homework is a test about Crude Oil development', 'Science-Chemistry', '2019-03-06', '2019-02-27', None, 0)]

Я хочу проникнуть внутрь этого кортежа, чтобы получить предметы, но если я зациклю список, он, похоже, ничего не сделает. Я хочу сделать это для pop() элемента в списке, который Science-Chemistry для опции выбора HTML. Я смотрел раньше, но, похоже, никто не сталкивался с такой же проблемой только с одним кортежем в списке

Ответы [ 3 ]

2 голосов
/ 06 марта 2019

Если в возвращаемом списке всегда будет ровно только один кортеж, вы можете распаковать его в значимые переменные, число которых должно соответствовать количеству выходных столбцов в вашем запросе:

(name, test, description, subject, updated, created, flags, score), = cursor.fetchall()

Обратите внимание на запятую после скобок, которая делает ее распакованной в качестве первого кортежа последовательности.

1 голос
/ 06 марта 2019

Вы можете думать об этом как о вложенном индексе списка и кортежа, то есть первый индекс даст вам элемент списка, который является кортежем, а второй индекс даст вам элемент этого кортежа.

Допустим, приведенный выше список присвоен переменной a.

a = [('Bob', 'Science Homework Test', 'Science homework is a test about Crude Oil development', 'Science-Chemistry', '2019-03-06', '2019-02-27', None, 0)]

a[0] = 1st element of list (a tuple)
a[0][3] = 4th element of that tuple
0 голосов
/ 06 марта 2019

Я предлагаю перейти от самого внешнего элемента к внутреннему. В начале у вас есть список с одним кортежем.

>>>> result = [('Bob', 'Science Homework Test', 'Science homework is a test about Crude Oil development', 'Science-Chemistry', '2019-03-06', '2019-02-27', None, 0)]

Чтобы получить кортеж, просто получите первый элемент списка:

>>> tuple_ = result[0]
('Bob', 'Science Homework Test', 'Science homework is a test about Crude Oil development', 'Science-Chemistry', '2019-03-06', '2019-02-27', None, 0)

Затем вы можете зациклить его или получить доступ к нему как к массиву, чтобы получить элементы:

for item in tuple_:
    # do stuff with the item
    print(item) 

или

item = tuple_[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...