首页 > 解决方案 > 循环以在 JSON 中提取字典中的某些部分

问题描述

我有 1500 个 JSON 格式的元素,但我需要在 python 中放入字典。每个元素都与一个 ID 相关联(它也在字典中并且是一个多边形表示)。

元素具有相同的结构:

OrderedDict([('d5b6d112-903b-4648-833e-d7c3fdac490b',
              {'title': 'S2A_MSIL1C_20200410T105031_N0209_R051_T31TCF_20200410T112156',
               'link': "https://scihub.copernicus.eu/dhus/odata/v1/Products('d5b6d112-903b-4648-833e-d7c3fdac490b')/$value",
               'link_alternative': "https://scihub.copernicus.eu/dhus/odata/v1/Products('d5b6d112-903b-4648-833e-d7c3fdac490b')/",
               'link_icon': "https://scihub.copernicus.eu/dhus/odata/v1/Products('d5b6d112-903b-4648-833e-d7c3fdac490b')/Products('Quicklook')/$value",
               'summary': 'Date: 2020-04-10T10:50:31.024Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 708.56 MB',
               'datatakesensingstart': datetime.datetime(2020, 4, 10, 10, 50, 31, 24000),
               'beginposition': datetime.datetime(2020, 4, 10, 10, 50, 31, 24000),
               'endposition': datetime.datetime(2020, 4, 10, 10, 50, 31, 24000),
               'ingestiondate': datetime.datetime(2020, 4, 10, 15, 23, 51, 463000),
               'orbitnumber': 25073,
               'relativeorbitnumber': 51,
               'cloudcoverpercentage': 25.1653,
               'sensoroperationalmode': 'INS-NOBS',
               'gmlfootprint': '<gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326" xmlns:gml="http://www.opengis.net/gml">\n   <gml:outerBoundaryIs>\n      <gml:LinearRing>\n         <gml:coordinates>41.12630256662179,1.925343307665624 41.0388866778506,1.893218517758493 40.89259720303277,1.839655652731482 40.74637877387899,1.786307008717412 40.60020137146172,1.733323787214736 40.554608185948275,1.716936587906194 40.538607851727775,0.638419022640916 41.52685230149302,0.6028173807795 41.546758769895376,1.918508192616414 41.12630256662179,1.925343307665624</gml:coordinates>\n      </gml:LinearRing>\n   </gml:outerBoundaryIs>\n</gml:Polygon>',
               'footprint': 'MULTIPOLYGON (((0.638419022640916 40.538607851727775, 1.716936587906194 40.554608185948275, 1.733323787214736 40.60020137146172, 1.786307008717412 40.74637877387899, 1.839655652731482 40.89259720303277, 1.893218517758493 41.0388866778506, 1.925343307665624 41.12630256662179, 1.918508192616414 41.546758769895376, 0.6028173807795 41.52685230149302, 0.638419022640916 40.538607851727775)))',

我需要提取:标题、足迹和 datatakesensingstart。我希望将所有提取的元素存储在一个列表中。

太感谢了!!

标签: python

解决方案


给定OrderedDict遵循您提到的结构的对象列表,您可以使用列表推导创建一个精简字典列表,其中仅包含您感兴趣的键。

trimmed_data = [
    {
        'Title': element[1]['Title'],
        'footprint': element[1]['footprint'],
        'datatakesensingstart': element[1]['datatakesensingstart'],
    }
    for element in data
]

推荐阅读