#python #json
#python #json
Вопрос:
У меня есть код, который выбирает некоторые данные из моей базы данных.
Он возвращает список:
selects = [(2, '4'), (2, '17'), (3, '65'), (1, '54'), (2, '14'),...]
Я хочу преобразовать этот список в объект JSON, поэтому я делаю:
selects = json.dumps(selects)
Предоставление мне значения, подобного этому:
[[2, "4"], [2, "17"], [3, "65"], [1, "54"], [2, "14"], ...]
После этого я хочу написать for
цикл для получения каждого объекта словаря и сохранения в переменной. Например:
[[2, "4"]]
var1 = 2
var2 = "4"
Но у меня проблема с извлечением нужного значения. Когда я пытаюсь var = json[0]
, он возвращает только [
.
Моя идея состоит в том, чтобы сделать for
для запуска thought все объекты в json, сохранить их в var и отправить другому процессу…
Что я должен сделать, чтобы сохранить значения, подобные приведенному выше примеру?
Вот код, который я использую:
import json
class Pull():
def process(self, **kwargs):
data = kwargs.get('data')
client = kwargs.get('client')
postgres = kwargs.get('postgres')
selects = postgres.select(data_type='session')
selects = json.dumps(selects)
for select in selects:
var1 = select[0]
var2 = select[1]
sessions = client.get_sessions(city=var1, cinema=var2)
Ответ №1:
Частично путаница здесь связана с терминологией, а частично — с ненужным уровнем сложности. Оба могут быть решены.
Имеющийся у вас объект JSON не является словарем. Это строка, содержащая сериализованное представление вложенного списка. Как и следовало ожидать от строки, select[0]
является первым символом строки, select[1]
вторым и т.д.
При сериализации, будь то в формате JSON или другом формате, вы получаете что-то, что можно отправить или записать. Данные JSON не предназначены для использования в качестве данных. У вас есть исходная, несериализованная форма для работы, если вам нужен фактический список:
selects = postgres.select(data_type='session')
for select in selects:
var1 = select[0]
var2 = select[1]
sessions = client.get_sessions(city=var1, cinema=var2)
Комментарии:
1. Спасибо за помощь и объяснение. Поскольку я новичок в такого рода задачах, это действительно помогает мне терпеливо решать проблему.
2. @a223w2d. Рад, что у вас все получилось. У всех возникают проблемы при запуске. Просто продолжайте подключаться, пока не получите git gud.
Ответ №2:
Это 3-й раз за 2 дня, который json.dumps
используется без видимой причины…. selects
это уже список / словарь, нет необходимости передавать его в json.dumps
который возвращает строку (следовательно select[0]
, первый символ не возвращается).
Удалите строку selects = json.dumps(selects)
Ответ №3:
selects = json.dumps(selects)
является строкой. Выполнение selects[0]
выдает первый символ.
Вы не хотите сериализовывать свои данные в JSON для их обработки. Сохраняйте ваши данные такими, какие они есть на самом деле, и обрабатывайте их как список python.