Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2021 15:59:14

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

Всем привет
В общем нужно подготовить json ответ и все было хорошо пока я возвращал только простые значения типа

 {"p": "8", "r": 17}

Но теперь мне не обходимо добавить в ответ массив значений типа
 {"p": "8", "r": 17, "points":[{"x":1, "y":1},{"x":2, "y":2}]}

и у меня ни как не получается это получить вот код которым я пытаюсь этого достичь
   result = {}
  result['p'] = 8    
  result['r'] = 17 
 
   for item in data:
          j = {}
          j['x'] = item['x']
          j['y'] = item['y']
   result['resp']['points'].append(j)
  return json.dumps(result)

Тут я получаю ошибку
TypeError: ‘int’ object is not subscriptable
я там как только не писал

но ни как не могу получить желаемый результат
что то с типами данных не то, я знаю про это видимо сказывает долголетний опыт программирования на php

Отредактировано vipTelnet (Янв. 10, 2021 16:00:30)

Офлайн

#2 Янв. 10, 2021 16:55:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Словарь со списком словарей

Не знаю как это связано с php но задача нерешаема пока вы не приведете содержимое переменной data.



Офлайн

#3 Янв. 10, 2021 16:58:19

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

В data имеем примерно такой массив

  [{ 'x': 4, 'y': 105}, { 'x': 32, 'y': 1}, { 'x': 191, 'y': 1}]

Отредактировано vipTelnet (Янв. 10, 2021 16:58:36)

Офлайн

#4 Янв. 10, 2021 17:01:27

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

doza_and
Не знаю как это связано с php
Да на php все очень просто
там можно было б написать
 result['resp']['points'][] = j
и все б работало, так как там все равно что ты кладёшь в массив

Отредактировано vipTelnet (Янв. 10, 2021 17:02:27)

Офлайн

#5 Янв. 10, 2021 17:12:07

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Словарь со списком словарей

Непонятно откуда вы берете p,r и что такое в вашем комментарии j
но если они уже есть
то

 d ={"p": "8", "r": 17}
d["points"]=[{ 'x': 4, 'y': 105}, { 'x': 32, 'y': 1}, { 'x': 191, 'y': 1}]
у вас наверное
 result['resp']['points'] = [{ 'x': 4, 'y': 105}, { 'x': 32, 'y': 1}, { 'x': 191, 'y': 1}]

Кстати стало любопытно а зачем в php нужны пустые скобки???



Офлайн

#6 Янв. 10, 2021 17:24:48

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

про php Your text to link here… можете почитать тут
переменные p и r
вычисляются в коде и нормально вставляются в список result
ранее в коде было только так и все нормально работало

   result = {}
  result['p'] = 8    
  result['r'] = 17 
 
  return json.dumps(result)
этот код возвращал такой json который был валиден и меня на тот момент полностью устраивал
 {"p": "8", "r": 17}
потом появилась необходимость добавить в этот json который возвращается этой функцией новые данные
массив точек, который у нас до этого уже есть в массиве data
  [{ 'x': 4, 'y': 105}, { 'x': 32, 'y': 1}, { 'x': 191, 'y': 1}]
для решения этой задачи я дополнил код который у меня уже был
следующими строками
 for item in data:
          j = {}
          j['x'] = item['x']
          j['y'] = item['y']
          result['resp']['points'].append(j)
но так к сожалению не работает получаю такую ошибку
result.append(j)
TypeError: ‘int’ object is not subscriptable

Офлайн

#7 Янв. 10, 2021 17:30:44

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1371
Репутация: +  121  -
Профиль   Отправить e-mail  

Словарь со списком словарей

[code python]result['resp']['points']=[][/code]
сначала создать,а потом добавлять,или выше вам показали можно сразу массив засунуть

Отредактировано xam1816 (Янв. 10, 2021 17:34:26)

Офлайн

#8 Янв. 10, 2021 17:34:57

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

так пишет

     result['resp']['points'] = []
TypeError: 'int' object does not support item assignment

Офлайн

#9 Янв. 10, 2021 17:43:12

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1371
Репутация: +  121  -
Профиль   Отправить e-mail  

Словарь со списком словарей

 result['resp']
где вы создали?

Офлайн

#10 Янв. 10, 2021 17:44:14

vipTelnet
Зарегистрирован: 2019-08-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь со списком словарей

я даже пробывал записывать все точки в массив о который потом пытаюсь присвоить result

         o = []
            for item in data:
                    j = {}
                    j['x'] = item['x']
                    j['y'] = item['y']
                    o.append(j)
        result['resp']['points'] = o

но опять вижу туже ошибку
result = o
TypeError: ‘int’ object does not support item assignment

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version