簡體   English   中英

將double for循環轉換為列表理解

[英]Convert double for loop into list comprehension

我有以下json對象:

{u'trailerAvailable': False, u'number': 10, u'watched': False, u'starringCast': u'Jan Fedder,Anja Nejarri', u'genres': [u'Krimi'], u'title': u'S\xfc\xdfes Jenseits', u'ancestorTitles': [{u'contentType': u'SERIES', u'titleId': u'B00ILY1FWE', u'title': u'Gro\xdfstadtrevier'}, {u'contentType': u'SEASON', u'number': 19, u'titleId': u'B00ILZTVXI', u'title': u'Gro\xdfstadtrevier - Staffel 19'}], u'restricted': False, u'synopsis': u"Dirk Matthies und Katja Metz erhalten einen entscheidenden Tipp, um endlich Hannes Rogolski alias 'die Ziege' zu fassen. Allerdings bringt der schwer kranke Informant dadurch seine Lebensgef\xe4hrtin Hilde in Gefahr.", u'titleId': u'B00ILZOQWE', u'watchCompleted': False, u'creditsStartTimeMillis': 2836000, u'customerReviewsCollectionIncluded': True, u'contentType': u'EPISODE', u'childTitles': [], u'studioOrNetwork': u'ARD', u'amazonRating': {u'count': 0, u'rating': 0.0}, u'watchedPositionMillis': {u'valueMillis': 0}, u'listInfo': [], u'previewAvailable': False, u'subtitles': {u'content': {u'languages': []}, u'preview': {u'languages': []}, u'trailer': {u'languages': []}}, u'restrictions': [], u'regulatoryRating': u'12', u'releaseOrFirstAiringDate': {u'valueFormatted': u'2005-03-21T00:00:00', u'valueDate': 1111363200000000}, u'hasSubtitles': False, u'formats': [{u'hasMobileTrailerEncode': False, u'videoAspectRatio': 0.0, u'offers': [{u'asin': u'B0043YVHMY', u'offerType': u'SUBSCRIPTION', u'buyable': False}, {u'asin': u'B00ILZOQWE', u'price': {u'valueFormatted': u'1,49\u20ac', u'valueLong': 149.0}, u'offerType': u'PURCHASE', u'purchaseButtonText': u'Buy episode - 1,49\u20ac', u'buyable': True}, {u'rentalExpiryTermFromPurchase': {u'valueMillis': 2592000000, u'valueFormatted': u'30 days to start watching'}, u'asin': u'B00QVECS4U', u'rentalExpiryTermFromStart': {u'valueMillis': 86400000, u'valueFormatted': u'24 hours to complete watching'}, u'offerType': u'RENTAL', u'buyable': False}], u'audioFormatTypes': [u'STEREO'], u'videoFormatType': u'SD', u'hasMobileEncode': True, u'images': [{u'heightPx': 0, u'widthPx': 0, u'type': u'COVER_ART_TV', u'uri': u'http://ecx.images-amazon.com/images/I/51a8c53GcjL._UR667,500_V1_PJStripe-Prime-Only-500px,TopLeft,0,0_.jpg'}, {u'heightPx': 0, u'widthPx': 0, u'type': u'COVER_ART_TV', u'uri': u'http://ecx.images-amazon.com/images/I/51a8c53GcjL._UR667,500_V1_PJStripe-Prime-Only-500px,TopLeft,0,0_.jpg'}], u'hasTrailerEncode': False, u'hasEncode': True}, {u'hasMobileTrailerEncode': False, u'videoAspectRatio': 0.0, u'offers': [{u'asin': u'B0043YVHMY', u'offerType': u'SUBSCRIPTION', u'buyable': False}, {u'asin': u'B00ILZOR9Q', u'offerType': u'PURCHASE', u'buyable': False}, {u'rentalExpiryTermFromPurchase': {u'valueMillis': 2592000000, u'valueFormatted': u'30 days to start watching'}, u'asin': u'B00QVFSN0W', u'rentalExpiryTermFromStart': {u'valueMillis': 86400000, u'valueFormatted': u'24 hours to complete watching'}, u'offerType': u'RENTAL', u'buyable': False}], u'audioFormatTypes': [u'STEREO'], u'videoFormatType': u'HD', u'hasMobileEncode': False, u'images': [{u'heightPx': 0, u'widthPx': 0, u'type': u'COVER_ART_TV', u'uri': u'http://ecx.images-amazon.com/images/I/51a8c53GcjL._UR667,500_V1_PJStripe-Prime-Only-500px,TopLeft,0,0_.jpg'}, {u'heightPx': 0, u'widthPx': 0, u'type': u'COVER_ART_TV', u'uri': u'http://ecx.images-amazon.com/images/I/51a8c53GcjL._UR667,500_V1_PJStripe-Prime-Only-500px,TopLeft,0,0_.jpg'}], u'hasTrailerEncode': False, u'hasEncode': False}], u'customerReviewCollection': {u'customerReviews': [], u'customerReviewSummary': {u'totalReviewCount': 0, u'threeStarReviewCount': 0, u'averageOverallRating': 0.0, u'twoStarReviewCount': 0, u'fiveStarReviewCount': 0, u'oneStarReviewCount': 0, u'fourStarReviewCount': 0}}, u'runtime': {u'valueMillis': 2820000, u'valueFormatted': u'47m'}, u'contractID': u'UXSG4'}

我正在嘗試通過以下方式獲得所有asin

possible_episode_ids = []
for item in t['formats']:
    for i in item['offers']:
        possible_episode_ids.append(i['asin']) 

>>> possible_episode_ids
[u'B0043YVHMY', u'B00ILZOQWE', u'B00QVECS4U', u'B0043YVHMY', u'B00ILZOR9Q', u'B00QVFSN0W']

如何使用列表理解功能?

只需復制現有行:

possible_episode_ids = [
    i['asin']
    for item in t['formats']
    for i in item['offers']
]

嘗試這個:

possible_episode_ids=[offer['asin']  for fmt in t['formats'] for offer in fmt['offers']]
possible_episode_ids = [j['asin'] for i in t['formats'] for j in i['offers']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM