简体   繁体   中英

How can I separate JSON object elements into separate arrays in Python?

{'labels': 'Middle East', 'default': 193}
{'labels': 'Coronavirus pandemic', 'default': 116}
{'labels': 'Europe', 'default': 90}
{'labels': 'United States', 'default': 67}
{'labels': 'Health', 'default': 63}

I have JSON objects like above.

I am trying to make below type array in python. plz help

{'labels': ['Middle East', 'Coronavirus pandemic', 'Europe', 'United States', 'Health'], 'default': [193, 116, 90, 67, 63]}

You can use list comprehension, assuming you have all those dictionaries inside an array:

dictionaries=[
{'labels': 'Middle East', 'default': 193},
{'labels': 'Coronavirus pandemic', 'default': 116},
{'labels': 'Europe', 'default': 90},
{'labels': 'United States', 'default': 67},
{'labels': 'Health', 'default': 63}]

labels=[d['labels'] for d in dictionaries]
default=[d['default'] for d in dictionaries]
result={'labels' : labels, 'default': default}
print(result)

Output:

{'labels': ['Middle East', 'Coronavirus pandemic', 'Europe', 'United States', 'Health'], 'default': [193, 116, 90, 67, 63]}

you can create a function merge that can take multiple dictionaries and then merge those dictionaries

def merge(*dicts):
    res = {}
    for d in dicts:
        for key in d.keys():
            if key in res:
                res[key].append(d[key])
            else:
                res[key] = []
                res[key].append(d[key])
    return res

a = {'labels': 'Middle East', 'default': 193}
b = {'labels': 'Coronavirus pandemic', 'default': 116}
c = {'labels': 'Europe', 'default': 90}
d = {'labels': 'United States', 'default': 67}
e = {'labels': 'Health', 'default': 63}
c = merge(a, b, c, d, e)
print(c)

output:

{'labels': ['Middle East', 'Coronavirus pandemic', 'Europe', 'United States', 'Health'], 'default': [193, 116, 90, 67, 63]}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM