2016-06-12 2 views
-3

Ниже приведен пример моего файла JSON (который довольно большой). Мне нужно добавить несколько вещей. Для key2, key3 Я с легкостью добавил, так как это довольно легко, но когда я пытаюсь добавить value1 и value2 от key1. это дает мне TypeError: list indices must be integers, not str.Найти значения под списком python

[ 
    { 
    "key1": [ 
     { 
      "value1": int, 
      "value2": "string", 
      "value3": "string", 
      "value4": "string", 
      "value5": "string", 
      "value6": int 
     }, 
    ], 
    "key2": some value, 
    "key3": some value, 
    }, 
],  
+1

Как вы пробовали? –

+0

Я пробовал это. для d in file_variable: info.append (d ["key1"] ["value1"]) – Test

+1

@Test [изменить] вопрос о включении [mcve]. – jonrsharpe

ответ

-2

Имейте в виду, что существует список и ВНУТРИ этот список представляет собой словарь .... Так не может получить доступ к нему напрямую. Просто чтобы показать, что я сделаю это поэтапно ...

y = d['key1'][0] 

Теперь y является словарем, и именно здесь вы ошибаетесь.

Теперь вы можете получить доступ к value1 как

value1 = y['value1'] 

Предположим, что это ваш JSON

[ 
     { 
     "key1": [ 
      { 
       "value1": int, 
       "value2": "string", 
       "value3": "string", 
       "value4": "string", 
       "value5": "string", 
       "value6": int 
      }, 
      { 
       "value1":int 
      }, 
     ], 
     "key2": some value, 
     "key3": some value, 
     }, 
    ], 

И d это имя вашего ...
JSON Теперь вы хотите получить доступ все value1 из словарей, Что вы будете делать, это

value_1s = [k['value1'] for k in d['key1']]

Что делает этот код, это итерирование по списку, хранящемуся в ключе1, элементы которого являются словарями, и из каждого словаря я получаю value1 и сохраняю его в новом списке.

Итак, теперь ваши значения_1 будут иметь все ключи ...

+0

Что делать, если у меня есть несколько словарей и нужно извлекать значения из каждого? – Test

+0

Предполагая, что у вас есть несколько словарей в одном ключе, просто переберите их с помощью цикла и получите доступ к значениям ... – hashcode55

+0

Может ли кто-нибудь писать в комментариях, почему мой ответ ниспровергнут? – hashcode55

Смежные вопросы