[PYTHON] JSON 문자열을 사전이 아닌 목록으로 변환
PYTHONJSON 문자열을 사전이 아닌 목록으로 변환
JSON 파일을 전달하고 데이터를 사전으로 변환하려고합니다.
지금까지, 이것은 내가 한 일입니다.
import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)
json1_data dict 형식이 될 것으로 기대하고 있지만 그것은 형식 (json1_data) 함께 확인할 때 실제로 목록 형식으로 나온다.
내가 뭘 놓치고 있니? 내가 열쇠 중 하나에 액세스 할 수 있도록 사전이 필요합니다.
해결법
-
==============================
1.JSON은 내부에 하나의 객체가있는 배열이므로,이 객체를 읽을 때 내부에 사전이있는 목록을 얻습니다. 아래 표시된 것처럼 목록에서 항목 0에 액세스하여 사전에 액세스 할 수 있습니다.
JSON은 내부에 하나의 객체가있는 배열이므로,이 객체를 읽을 때 내부에 사전이있는 목록을 얻습니다. 아래 표시된 것처럼 목록에서 항목 0에 액세스하여 사전에 액세스 할 수 있습니다.
json1_data = json.loads(json1_str)[0]
이제 데이터 포인트에 저장된 데이터에 액세스 할 수 있습니다.
datapoints = json1_data['datapoints']
datapoints [0 : 5] [0] 당신이 기대하는 것을하지 않습니다. datapoints [0 : 5]는 처음 5 개의 요소 만 포함하는 새 목록 슬라이스를 반환하고 그 끝에 [0]을 추가하면 결과 목록 슬라이스의 첫 번째 요소 만 가져옵니다. 당신이 원하는 결과를 얻기 위해 사용해야 할 것은 목록을 이해하는 것입니다 :
[p[0] for p in datapoints[0:5]]
다음은 평균을 계산하는 간단한 방법입니다.
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8
NumPy를 설치하고자한다면 다음 단계가 더 쉽습니다.
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 배열의 슬라이싱 구문과 함께 연산자를 사용하면 원래 목록 슬라이스에서 예상했던 동작을 얻을 수 있습니다.
-
==============================
2.다음은 사전에서 json 텍스트 파일로 읽는 간단한 스 니펫입니다. json 파일은 json 표준을 따라야하므로 "작은 따옴표 대신"큰 따옴표를 사용해야합니다.
다음은 사전에서 json 텍스트 파일로 읽는 간단한 스 니펫입니다. json 파일은 json 표준을 따라야하므로 "작은 따옴표 대신"큰 따옴표를 사용해야합니다.
JSON dump.txt 파일 :
{"test":"1", "test2":123}
파이썬 스크립트 :
import json with open('/your/path/to/a/dict/dump.txt') as handle: dictdump = json.loads(handle.read())
-
==============================
3.사전에 JSON 데이터를로드하는 가장 좋은 방법은 내장 된 json 로더를 사용자가 사용할 수있게하는 것입니다.
사전에 JSON 데이터를로드하는 가장 좋은 방법은 내장 된 json 로더를 사용자가 사용할 수있게하는 것입니다.
다음은 사용할 수있는 샘플 스 니펫입니다.
import json f = open("data.json") data = json.load(f)) f.close() type(data) print(data[<keyFromTheJsonFile>])
from https://stackoverflow.com/questions/19483351/converting-json-string-to-dictionary-not-list by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 '자체'변수를 초급자에게 설명하기 [duplicate] (0) | 2018.10.03 |
---|---|
[PYTHON] 이 파이썬 스 니펫에서 세미콜론이 허용되는 이유는 무엇입니까? (0) | 2018.10.03 |
[PYTHON] 같은 머신에 여러개의 공식 Python 버전이 있습니까? (0) | 2018.10.03 |
[PYTHON] 파이썬 하위 프로세스. 열기 "OSError : [Errno 12] 메모리를 할당 할 수 없습니다" (0) | 2018.10.03 |
[PYTHON] 파이썬에서 비추천 경고를 무시하는 법 (0) | 2018.10.03 |