簡體   English   中英

訪問詞典列表中的值

[英]Accessing values in a list of dictionaries

Python的新手,並使用Kaggle的LA Parking Citation數據庫進行練習。

我從GoogleMaps API檢索了數據,現在我正努力解析它。 有點背景,我在數據框中有一個地址列表,將它們通過API放置,然后將結果放置在名為geocode_result的變量中。 我想從該變量訪問相應的郵政編碼,將其放入列表格式,然后附加我的數據框以進行進一步分析。

我想在geocode_result字典列表中創建所有郵政編碼的列表。 目前,郵政編碼返回一個空列表。

list_component = geocode_result[0][0]['geometry']['location']['address_components']
zipcodes = []

def geocode_results_process(list_component):        
    for dct in list_component:
        if 'postal_code' in dct['types']:
            zipcode = dct['short_name']
            zipcodes.append(zipcode)

# - this returns a null list

在下面,我已經漂亮地打印了geocode_result的第一個元素。 我想要的元素是“郵政編碼”>“短名稱”>“ 90057”。

pprint(geocode_result[0])

[{'address_components': [{'long_name': 'Los Angeles',
                          'short_name': 'Los Angeles',
                          'types': ['locality', 'political']},
                         {'long_name': 'Los Angeles County',
                          'short_name': 'Los Angeles County',
                          'types': ['administrative_area_level_2',
                                    'political']},
                         {'long_name': 'California',
                          'short_name': 'CA',
                          'types': ['administrative_area_level_1',
                                    'political']},
                         {'long_name': 'United States',
                          'short_name': 'US',
                          'types': ['country', 'political']}],
  'formatted_address': 'Los Angeles, CA, USA',
  'geometry': {'bounds': {'northeast': {'lat': 34.3373061, 'lng': -118.1552891},
                          'southwest': {'lat': 33.7036519,
                                        'lng': -118.6681759}},
               'location': {'address_components': [{'long_name': '721',
                                                    'short_name': '721',
                                                    'types': ['street_number']},
                                                   {'long_name': 'South '
                                                                 'Westlake '
                                                                 'Avenue',
                                                    'short_name': 'S Westlake '
                                                                  'Ave',
                                                    'types': ['route']},
                                                   {'long_name': 'Westlake',
                                                    'short_name': 'Westlake',
                                                    'types': ['neighborhood',
                                                              'political']},
                                                   {'long_name': 'Los Angeles',
                                                    'short_name': 'Los Angeles',
                                                    'types': ['locality',
                                                              'political']},
                                                   {'long_name': 'Los Angeles '
                                                                 'County',
                                                    'short_name': 'Los Angeles '
                                                                  'County',
                                                    'types': ['administrative_area_level_2',
                                                              'political']},
                                                   {'long_name': 'California',
                                                    'short_name': 'CA',
                                                    'types': ['administrative_area_level_1',
                                                              'political']},
                                                   {'long_name': 'United '
                                                                 'States',
                                                    'short_name': 'US',
                                                    'types': ['country',
                                                              'political']},
                                                   {'long_name': '90057',
                                                    'short_name': '90057',
                                                    'types': ['postal_code']}],
                            'formatted_address': '721 S Westlake Ave, Los '
                                                 'Angeles, CA 90057, USA',
                            'geometry': {'bounds': {'northeast': {'lat': 34.0555963,
                                                                  'lng': -118.2761535},
                                                    'southwest': {'lat': 34.0553198,
                                                                  'lng': -118.2766184}},
                                         'location': {'lat': 34.0554475,
                                                      'lng': -118.2763928},
                                         'location_type': 'ROOFTOP',
                                         'viewport': {'northeast': {'lat': 34.05680703029149,
                                                                    'lng': -118.2750369697085},
                                                      'southwest': {'lat': 34.0541090697085,
                                                                    'lng': -118.2777349302915}}},
                            'place_id': 'ChIJHbSDWZ_HwoARj7BGtBrQq94',
                            'types': ['premise']},
               'location_type': 'APPROXIMATE',
               'viewport': {'northeast': {'lat': 34.3373061,
                                          'lng': -118.1552891},
                            'southwest': {'lat': 33.7036519,
                                          'lng': -118.6681759}}},
  'place_id': 'ChIJE9on3F3HwoAR9AhGJW_fL-I',
  'types': ['locality', 'political']}]

這是我細分的內容:

pprint(geocode_result[0][0]['geometry']['location']['address_components])

[{'long_name': '721', 'short_name': '721', 'types': ['street_number']},
 {'long_name': 'South Westlake Avenue',
  'short_name': 'S Westlake Ave',
  'types': ['route']},
 {'long_name': 'Westlake',
  'short_name': 'Westlake',
  'types': ['neighborhood', 'political']},
 {'long_name': 'Los Angeles',
  'short_name': 'Los Angeles',
  'types': ['locality', 'political']},
 {'long_name': 'Los Angeles County',
  'short_name': 'Los Angeles County',
  'types': ['administrative_area_level_2', 'political']},
 {'long_name': 'California',
  'short_name': 'CA',
  'types': ['administrative_area_level_1', 'political']},
 {'long_name': 'United States',
  'short_name': 'US',
  'types': ['country', 'political']},
 {'long_name': '90057', 'short_name': '90057', 'types': ['postal_code']}]

我想以編程方式遍歷我的變量geocode_results以創建郵政編碼列表。

您的代碼對我來說很好

geocode_result = [[{'address_components': [{'long_name': 'Los Angeles',
                                         'short_name': 'Los Angeles',
                                         'types': ['locality', 'political']},
                                        {'long_name': 'Los Angeles County',
                                         'short_name': 'Los Angeles County',
                                         'types': ['administrative_area_level_2',
                                                   'political']},
                                        {'long_name': 'California',
                                         'short_name': 'CA',
                                         'types': ['administrative_area_level_1',
                                                   'political']},
                                        {'long_name': 'United States',
                                         'short_name': 'US',
                                         'types': ['country', 'political']}],
                 'formatted_address': 'Los Angeles, CA, USA',
                 'geometry': {'bounds': {'northeast': {'lat': 34.3373061, 'lng': -118.1552891},
                                         'southwest': {'lat': 33.7036519,
                                                       'lng': -118.6681759}},
                              'location': {'address_components': [{'long_name': '721',
                                                                   'short_name': '721',
                                                                   'types': ['street_number']},
                                                                  {'long_name': 'South '
                                                                                'Westlake '
                                                                                'Avenue',
                                                                   'short_name': 'S Westlake '
                                                                                 'Ave',
                                                                   'types': ['route']},
                                                                  {'long_name': 'Westlake',
                                                                   'short_name': 'Westlake',
                                                                   'types': ['neighborhood',
                                                                             'political']},
                                                                  {'long_name': 'Los Angeles',
                                                                   'short_name': 'Los Angeles',
                                                                   'types': ['locality',
                                                                             'political']},
                                                                  {'long_name': 'Los Angeles '
                                                                                'County',
                                                                   'short_name': 'Los Angeles '
                                                                                 'County',
                                                                   'types': ['administrative_area_level_2',
                                                                             'political']},
                                                                  {'long_name': 'California',
                                                                   'short_name': 'CA',
                                                                   'types': ['administrative_area_level_1',
                                                                             'political']},
                                                                  {'long_name': 'United '
                                                                                'States',
                                                                   'short_name': 'US',
                                                                   'types': ['country',
                                                                             'political']},
                                                                  {'long_name': '90057',
                                                                   'short_name': '90057',
                                                                   'types': ['postal_code']}],
                                           'formatted_address': '721 S Westlake Ave, Los '
                                                                'Angeles, CA 90057, USA',
                                           'geometry': {'bounds': {'northeast': {'lat': 34.0555963,
                                                                                 'lng': -118.2761535},
                                                                   'southwest': {'lat': 34.0553198,
                                                                                 'lng': -118.2766184}},
                                                        'location': {'lat': 34.0554475,
                                                                     'lng': -118.2763928},
                                                        'location_type': 'ROOFTOP',
                                                        'viewport': {'northeast': {'lat': 34.05680703029149,
                                                                                   'lng': -118.2750369697085},
                                                                     'southwest': {'lat': 34.0541090697085,
                                                                                   'lng': -118.2777349302915}}},
                                           'place_id': 'ChIJHbSDWZ_HwoARj7BGtBrQq94',
                                           'types': ['premise']},
                              'location_type': 'APPROXIMATE',
                              'viewport': {'northeast': {'lat': 34.3373061,
                                                         'lng': -118.1552891},
                                           'southwest': {'lat': 33.7036519,
                                                         'lng': -118.6681759}}},
                 'place_id': 'ChIJE9on3F3HwoAR9AhGJW_fL-I',
                 'types': ['locality', 'political']}]]

list_component = geocode_result[0][0]['geometry']['location']['address_components']
zipcodes = []

def geocode_results_process(list_component):
    for dct in list_component:
        if 'postal_code' in dct['types']:
            zipcode = dct['short_name']
            zipcodes.append(zipcode)

geocode_results_process(list_component)
print(zipcodes)

>>> ['90057']

基於您發布的代碼,我懷疑您沒有調用您創建的函數?

更新:遍歷geocode_result

for el in geocode_result:
    for sub_el in el:
        geocode_results_process(sub_el['geometry']['location']['address_components'])

暫無
暫無

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

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