Получить данные из вложенного словаря Python
Нужна ваша помощь. Имеется словарь:
a =
{
"meta": {
"request": {
"main_domain_only": false,
"format": "json",
"domain": "stroсd.com",
"start_date": "2019-10-01",
"end_date": "2020-01-31",
"limit": null,
"country": "world",
"show_verified": true
},
"status": "Success",
"last_updated": "2020-01-31"
},
"overview": [
{
"domain": "Direct",
"source_type": "Direct",
"share": 0.55773467
},
{
"domain": "Google Search",
"source_type": "Search / Organic",
"share": 0.2018796
},
{
"domain": "Facebook",
"source_type": "Social",
"share": 0.081907906
},
{
"domain": "Google Search",
"source_type": "Search / Paid",
"share": 0.035226278
},
{
"domain": "Email",
"source_type": "Email",
"share": 0.026017865
},
{
"domain": "Other Sources",
"source_type": "Other",
"share": 0.0070781517
}
],
"visits": 36721
}
Как вывести первые 3 домена? То есть Direct, Google Search, Facebook.
print(a["overview"]["domain"][0][0][0:3])
Ошибка: TypeError: list indices must be integers or slices, not str
Ответы (1 шт):
Автор решения: entithat
→ Ссылка
Изначально a у вас это JSON. JSON != Питонскому словарю.
Чтобы распарсить его, нужно импорировать пакет json.
a = """
{
"meta":{
"request":{
"main_domain_only":false,
"format":"json",
"domain":"stroсd.com",
"start_date":"2019-10-01",
"end_date":"2020-01-31",
"limit":null,
"country":"world",
"show_verified":true
},
"status":"Success",
"last_updated":"2020-01-31"
},
"overview":[
{
"domain":"Direct",
"source_type":"Direct",
"share":0.55773467
},
{
"domain":"Google Search",
"source_type":"Search / Organic",
"share":0.2018796
},
{
"domain":"Facebook",
"source_type":"Social",
"share":0.081907906
},
{
"domain":"Google Search",
"source_type":"Search / Paid",
"share":0.035226278
},
{
"domain":"Email",
"source_type":"Email",
"share":0.026017865
},
{
"domain":"Other Sources",
"source_type":"Other",
"share":0.0070781517
}
],
"visits":36721
}
"""
import json
domains = [i['domain'] for i in json.loads(a)['overview']][:3]