Думаю, есть опечатка, клавиша 'items'
, это list
, и всякий раз, когда мы начинаем скобки ([
), мы должны закрывать их (]
).
{'etag': '"ld9biNPKjAjgjV7EZ4EKeEGrhao/1v2mrzYSYG6onNLt2qTj13hkQZk"',
'items': [{'etag': '"ld9biNPKjAjgjV7EZ4EKeEGrhao/Xy1mB4_yLrHy_BmKmPBggty2mZQ"',
'id': '1',
'kind': 'youtube#videoCategory',
'snippet': {'assignable': True,
'channelId': 'UCBR8-60-B28hp2BmDPdntcQ',
'title': 'Film & Animation'}},
{'etag': '"ld9biNPKjAjgjV7EZ4EKeEGrhao/UZ1oLIIz2dxIhO45ZTFR3a3NyTA"',
'id': '2',
'kind': 'youtube#videoCategory',
'snippet': {'assignable': True,
'channelId': 'UCBR8-60-B28hp2BmDPdntcQ',
'title': 'Autos & Vehicles'}},
{'etag': '"ld9biNPKjAjgjV7EZ4EKeEGrhao/nqRIq97-xe5XRZTxbknKFVe5Lmg"',
'id': '10',
'kind': 'youtube#videoCategory',
'snippet': {'assignable': True,
'channelId': 'UCBR8-60-B28hp2BmDPdntcQ',
'title': 'Music'}}, # <----- HERE, no brackets
'kind': 'youtube#videoCategoryListResponse'}
Понимание списка
# all items
[row for row in data['items']]
# custom data from all items
[(row['id'], row['snippet']['title']) for row in data['items']]
# just id > 0 (filtering data)
[row for row in data['items'] if row['id']>0]
объединяет оба фильтра, извлекая специальные поля:
[(r['id'], r['snippet']['title']) for r in data['items'] if r['id'] > 0]
Также дайте filter
шанс
это действительно круто
f = lambda r: (r['id'], r['snippet']['title'])
result = filter(f, data['items'])