如何从JSON对象创建Python列表?

时间:2019-04-07 00:12:55

标签: json python-3.x

我正在用Python编写脚本,使用flickr.photos.search API检索一个JSON对象,其中包含带有特定标签的照片的ID和信息。

response = flickr.photos.search(api_key = api_key, tags='painting')

这是“响应”的样子:

{'photos': {'page': 1, 'pages': 7112, 'perpage': 100, 'total': '711114', 'photo': [

{'id': '33675403798', 'owner': '93779577@N00', 'secret': 'cb33cbcde6', 'server': '7914', 'farm': 8, 'title': ' Door 5302AA', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '40586047293', 'owner': '93779577@N00', 'secret': 'd4a0df639e', 'server': '7849', 'farm': 8, 'title': 'Elevator Door 5302', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '33675168088', 'owner': '164939965@N03', 'secret': '8d271064e7', 'server': '7857', 'farm': 8, 'title': 'A New Shade Of Blue', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '32582314737', 'owner': '81035653@N00', 'secret': 'e78b4f7235', 'server': '7821', 'farm': 8, 'title': 'Saint Michael', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

]}, 

'stat': 'ok'}

由此,我想创建一个仅包含照片“ id”的Python列表,看起来像这样:

['33675403798', '40586047293', '33675168088', '32582314737']

如何仅提取ID并创建列表?




编辑: 感谢您抽出宝贵时间来帮助我! 我设法使用以下代码创建了列表:

tag="painting"
response = flickr.photos.search(api_key = api_key, tags=tag)

photo_list=[]
for record in response['photos']['photo']:
    s=record["id"]
    photo_list.append(s)

我希望它将来能对某人有所帮助。

3 个答案:

答案 0 :(得分:2)

由于flickr.photos.search已经为您解析了JSON,因此您可以使用photo访问response["photos"]["photo"]列表。

然后,您可以创建一个列表,该列表仅包含您需要的ID,并具有列表理解功能(Python语言等效于for循环,用于创建列表):

photo_ids = [photo["id"] for photo in response["photos"]["photo"]]

此代码的for循环等效项是:

photo_ids = []
for photo in response["photos"]["photo"]:
    photo_ids.append(photo["id"])

答案 1 :(得分:1)

flickr.photos.search()函数将为您返回包含其他字典的字典。您对ID感兴趣,该ID是字典(键:照片)的一部分,字典包含具有这些值(键:ID)的字典列表(键:照片)。您可以使用如下列表理解来提取所需的输出:

[photodict['id'] for photodict in response['photos']['photo']]

答案 2 :(得分:0)

这应该有效:

步骤-1:

将字典设置为变量,例如Hello from Flask!

df

第二步:

df = {'photos': {'page': 1, 'pages': 7112, 'perpage': 100, 'total': '711114', 'photo': [

{'id': '33675403798', 'owner': '93779577@N00', 'secret': 'cb33cbcde6', 'server': '7914', 'farm': 8, 'title': ' Door 5302AA', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '40586047293', 'owner': '93779577@N00', 'secret': 'd4a0df639e', 'server': '7849', 'farm': 8, 'title': 'Elevator Door 5302', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '33675168088', 'owner': '164939965@N03', 'secret': '8d271064e7', 'server': '7857', 'farm': 8, 'title': 'A New Shade Of Blue', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

{'id': '32582314737', 'owner': '81035653@N00', 'secret': 'e78b4f7235', 'server': '7821', 'farm': 8, 'title': 'Saint Michael', 'ispublic': 1, 'isfriend': 0, 'isfamily': 0}, 

]}, 

'stat': 'ok'}

输出: enter image description here