Warm tip: This article is reproduced from stackoverflow.com, please click
json parsing python

How to store Json data in a Complex Python List

发布于 2020-03-28 23:13:55

I have this JSON:

{
    "OBJ": "ID",
    "UNQ": {
        "name": "ISD",
        "MANT": True
    },


    "features": [{
            "attributes": {
                "ID": 1,
                "PR": "X1",
                "CR": "Y1",
                "LU": 1,
                "CO": 15,
                "DE": None,
                "RE": 90
            }
        },
        {
            "attributes": {
                "ID": 2,
                "PR": "X2",
                "CR": "Y2",
                "LU": 2,
                "CO": 23,
                "DE": None,
                "RE": 4
            }
        },
        {
            "attributes": {
                "ID": 3,
                "PR": "X3",
                "CR": "Y3",
                "LU": 3,
                "CO": 56,
                "DE": None,
                "RE": 6
            }
        },
        {
            "attributes": {
                "ID": 4,
                "PR": "X4",
                "CR": "Y4",
                "LU": 4,
                "CO": None,
                "DE": 2,
                "RE": 2
            }
        },
        {
            "attributes": {
                "ID": 5,
                "PR": "X5",
                "CR": "Y5",
                "LU": 5,
                "CO": 34,
                "DE": None,
                "RE": None
            }
        },
        {
            "attributes": {
                "ID": 6,
                "PR": "X6",
                "CR": "Y6",
                "LU": 6,
                "CO": 5,
                "DE": None,
                "RE": 2
            }
        },
        {
            "attributes": {
                "ID": 7,
                "PR": "X7",
                "CR": "Y7",
                "LU": 7,
                "CO": None,
                "DE": None,
                "RE": 1
            }
        }
    ]
}

I want to extract all attributes key:value and insert lists of every attribute[] into a main list

Features => Attributes => ID,PR,CR,LU,CO,DE,RE => values

So the list should be this for every attribute [[ID, value],[PR, value],[CR, value],[LU, value],[CO, value],[DE, value],[RE, value]]

I tried this but doesn't work.

list= []
data = json.loads(string)
for attr in data["features"]:
    for key, val in attr["attributes"].items():
        list.append(key,value)
Questioner
PythonAddicted
Viewed
49
Rakesh 2020-01-31 17:37

Use:

result = []
for i in data['features']:   #iterate each features
    result.append([list(j) for j in i['attributes'].items()])  #Get attributes and use `dict.items()`

print(result)  

Output:

[[['ID', 1], ['PR', 'X1'], ['CR', 'Y1'], ['LU', 1], ['CO', 15], ['DE', None], ['RE', 90]], 
 [['ID', 2], ['PR', 'X2'], ['CR', 'Y2'], ['LU', 2], ['CO', 23], ['DE', None], ['RE', 4]], 
 [['ID', 3], ['PR', 'X3'], ['CR', 'Y3'], ['LU', 3], ['CO', 56], ['DE', None], ['RE', 6]], 
 [['ID', 4], ['PR', 'X4'], ['CR', 'Y4'], ['LU', 4], ['CO', None], ['DE', 2], ['RE', 2]], 
 [['ID', 5], ['PR', 'X5'], ['CR', 'Y5'], ['LU', 5], ['CO', 34], ['DE', None], ['RE', None]], 
 [['ID', 6], ['PR', 'X6'], ['CR', 'Y6'], ['LU', 6], ['CO', 5], ['DE', None], ['RE', 2]], 
 [['ID', 7], ['PR', 'X7'], ['CR', 'Y7'], ['LU', 7], ['CO', None], ['DE', None], ['RE', 1]]
]