Преобразование строки JSON в словарь не список
Я пытаюсь передать в JSON-файл и конвертировать данные в словарь.
до сих пор, это то, что я сделал:
import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)
Я жду json1_data быть dict тип но на самом деле выходит как list введите, когда я проверяю его с type(json1_data).
что я упустил? Мне нужно, чтобы это был словарь, чтобы я мог получить доступ к одному из ключей.
3 ответов:
ваш JSON-это массив с одним объектом внутри, поэтому, когда вы читаете его, вы получаете список со словарем внутри. Вы можете получить доступ к своему словарю, обратившись к пункту 0 в списке, как показано ниже:
вы можете получить доступ к данным, хранящимся в информационные точки как вы и ожидали:json1_data = json.loads(json1_str)[0]datapoints = json1_data['datapoints']
у меня есть еще один вопрос, если кто может укусить: я пытаюсь взять среднюю из первых элементов в этих точки данных (т. е. точки данных[0][0]). Просто чтобы перечислить их, я попытался сделать datapoints[0:5][0] но все, что я получаю, это первая точка данных с обоими элементами, в отличие от желания получить первые 5 точек данных, содержащих только первый элемент. Есть ли способ сделать это?
datapoints[0:5][0]не делать то, что вы ожидаете.datapoints[0:5]возвращает новый фрагмент списка, содержащий только первые 5 элементов, а затем добавление[0]в конце он будет принимать только первый элемент от результирующий список slice. То, что вам нужно использовать, чтобы получить желаемый результат-это понимание:[p[0] for p in datapoints[0:5]]вот простой способ вычислить среднее:
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8если вы готовы установить включает в себя, тогда еще проще:
import numpy json1_file = open('json1') json1_str = json1_file.read() json1_data = json.loads(json1_str)[0] datapoints = numpy.array(json1_data['datapoints']) avg = datapoints[0:5,0].mean() # avg is now 35.8С помощью
,оператор с синтаксисом нарезки для массивов NumPy имеет поведение, которое вы изначально ожидали с ломтиками списка.
вот простой фрагмент, который прочитал в
jsonтекстовый файл со словарем. Обратите внимание, что ваш файл json должен соответствовать стандарту json, поэтому он должен иметь"двойные кавычки, а затем'одинарные кавычки.ваш дамп JSON.текстовый файл:
{"test":"1", "test2":123}Python Скрипт:
import json with open('/your/path/to/a/dict/dump.txt') as handle: dictdump = json.loads(handle.read())
лучший способ загрузить данные JSON в словарь - это использовать встроенный загрузчик json.
Ниже приведен пример фрагмента, который может быть использован.
import json f = open("data.json") data = json.load(f)) f.close() type(data) print(data[<keyFromTheJsonFile>])
Comments