programing

python에서 json 배열을 필터링하는 방법

newstyles 2023. 3. 25. 10:55

python에서 json 배열을 필터링하는 방법

이것이 현재 가지고 있는 json 어레이입니다.유형이 =1인 모든 json 개체를 가져옵니다.

필터 전:

[ 
        {
            "type": 1
            "name" : "name 1",
        }, 
        {
            "type": 2
            "name" : "name 2",
        }, 
        {
            "type": 1
            "name" : "name 3"
        }, 
]

필터 후:

[ 
        {
            "type": 1
            "name" : "name 1",
        }, 
        {
            "type": 1
            "name" : "name 3"
        }, 
]

제발 도와주세요.

다음 코드 조각은 당신이 원하는 대로 동작하지만, 당신의 입력(질문에 기재된 바와 같이)이 유효한 json 문자열이 아님을 주의해 주십시오.http://jsonlint.com 에서 확인하실 수 있습니다.

import json

input_json = """
[
    {
        "type": "1",
        "name": "name 1"
    },
    {
        "type": "2",
        "name": "name 2"
    },
    {
        "type": "1",
        "name": "name 3"
    }
]"""

# Transform json input to python objects
input_dict = json.loads(input_json)

# Filter python objects with list comprehensions
output_dict = [x for x in input_dict if x['type'] == '1']

# Transform python object back into json
output_json = json.dumps(output_dict)

# Show json
print output_json

간단하게

print [obj for obj in dict if(obj['type'] == 1)] 

링크의 예

filter() 메서드는 시퀀스 내의 각 요소가 참인지 아닌지를 테스트하는 함수를 사용하여 지정된 시퀀스를 필터링합니다.필터에 관한 문서

>>> obj=[
...     {
...         "type": 1,
...         "name": "name 1"
...     },
...     {
...         "type": 2,
...         "name": "name 2"
...     },
...     {
...         "type": 1,
...         "name": "name 3"
...     }
... ]
>>> filter(lambda x: x['type'] == 1, obj)
<filter object at 0x7fd98805ca00>
>>> list(filter(lambda x: x['type'] == 1, obj))
[{'type': 1, 'name': 'name 1'}, {'type': 1, 'name': 'name 3'}]
>>> list(filter(lambda x: x['type'] == 2, obj))
[{'type': 2, 'name': 'name 2'}]

언급URL : https://stackoverflow.com/questions/27189892/how-to-filter-json-array-in-python