[英]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.