您如何优化从网站提取的json输出?

时间:2020-02-03 14:37:19

标签: python dictionary

我正在使用python脚本提取此json输出:https://api.deezer.com/playlist/1050179021/tracks

我的问题是,一旦我用这些行提取了['data'],我只想在'artist'中选择'name'元素:

url = f'https://api.deezer.com/playlist/1050179021/tracks'
user_response = requests.get(url)
n = user_response.json()['data']

有什么方法可以做到? 很高兴回答任何问题以澄清任何疑问。

2 个答案:

答案 0 :(得分:0)

我不知道是否指定了艺术家,如果没有的话,总会有一个可用名称:

[element['artist']['name'] for element in n if 'artist' in element and 'name' in element['artist']]

否则,您可以使用:

[element['artist']['name'] for element in n if 'artist' in element]

这将过滤列表,因此最终列表将仅包含艺术家。如果要使用相同的列表,但在未指定艺术家的情况下使用None值:

[element['artist']['name'] if 'artist' in element and 'name' in element['artist'] else None for element in n ]

答案 1 :(得分:0)

您可以使用列表理解:

[e['artist']['name'] for e in n]

输出:

['Testament',
 'Parkway Drive',
 'Avenged Sevenfold',
 'Heaven Shall Burn',
 'Bury Tomorrow',
 'Hollywood Undead',
 'allusinlove',
 'Sepultura',
 'Suicide Silence',
 'Lordi',
 'Vader',
 'Five Finger Death Punch',
 'Code Orange',
 'Russian Circles',
 'Breaking Benjamin',
 'In This Moment',
 'Apocalyptica',
 'Ozzy Osbourne',
 'Higher Power',
 'Body Count',
 'Intronaut',
 'Kvelertak',
 'Demons & Wizards',
 'Annihilator',
 'Antagonist A.D.']