Преобразование строки 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).



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

537   3  

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

    Ничего не найдено.