我正在用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)
我希望它将来能对某人有所帮助。
答案 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'}