Найти - Пользователи
Полная версия: Словарь со списком словарей
Начало » Python для новичков » Словарь со списком словарей
1 2
vipTelnet
Всем привет
В общем нужно подготовить 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
doza_and
Не знаю как это связано с php но задача нерешаема пока вы не приведете содержимое переменной data.
vipTelnet
В data имеем примерно такой массив
  [{ 'x': 4, 'y': 105}, { 'x': 32, 'y': 1}, { 'x': 191, 'y': 1}]
vipTelnet
doza_and
Не знаю как это связано с php
Да на php все очень просто
там можно было б написать
 result['resp']['points'][] = j
и все б работало, так как там все равно что ты кладёшь в массив
doza_and
Непонятно откуда вы берете 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 нужны пустые скобки???
vipTelnet
про 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

xam1816
[code python]result['resp']['points']=[][/code]
сначала создать,а потом добавлять,или выше вам показали можно сразу массив засунуть
vipTelnet
так пишет
     result['resp']['points'] = []
TypeError: 'int' object does not support item assignment
xam1816
 result['resp']
где вы создали?
vipTelnet
я даже пробывал записывать все точки в массив о который потом пытаюсь присвоить 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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB