복붙노트

[PYTHON] JSON 문자열을 사전이 아닌 목록으로 변환

PYTHON

JSON 문자열을 사전이 아닌 목록으로 변환

JSON 파일을 전달하고 데이터를 사전으로 변환하려고합니다.

지금까지, 이것은 내가 한 일입니다.

import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)

json1_data dict 형식이 될 것으로 기대하고 있지만 그것은 형식 (json1_data) 함께 확인할 때 실제로 목록 형식으로 나온다.

내가 뭘 놓치고 있니? 내가 열쇠 중 하나에 액세스 할 수 있도록 사전이 필요합니다.

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.사전에 JSON 데이터를로드하는 가장 좋은 방법은 내장 된 json 로더를 사용자가 사용할 수있게하는 것입니다.

    사전에 JSON 데이터를로드하는 가장 좋은 방법은 내장 된 json 로더를 사용자가 사용할 수있게하는 것입니다.

    다음은 사용할 수있는 샘플 스 니펫입니다.

    import json
    f = open("data.json")
    data = json.load(f))
    f.close()
    type(data)
    print(data[<keyFromTheJsonFile>])
    
  4. from https://stackoverflow.com/questions/19483351/converting-json-string-to-dictionary-not-list by cc-by-sa and MIT license