如何在 python 中正确访问 Geocode API 响应

How to correctly access Geocode API response in python

我正在使用 Flask 和 Google 的地理编码 API 来获取有关城市的数据,我想 return 它的坐标为 JSON。这是相关代码。

from flask import Flask, request, json
import googlemaps
from datetime import datetime
import requests

app = Flask(__name__)

gmaps = googlemaps.Client(key='My-Key') #I replaced my key

@app.route("/search/<city>", methods=['GET'])
def _find_nearby_events(city):
    request_address = '%(city)s , IN' % {'city':city}
    geocode_result = gmaps.geocode(request_address)

    coordinates = geocode_result["results"][0]["geometry"]["location"]

    return json.dumps(coordinates)

现在,当我使用邮递员向“http://127.0.0.1:5000/search/pune”发送 GET 请求时,它会在我的控制台中返回此错误

  File "/home/akshay/Black_Thunder/event-listing-microservice/maps/views.py", line 51, in _find_nearby_events
coordinates = geocode_result["results"][0]["geometry"]["location"]
TypeError: list indices must be integers or slices, not str

现在把上面的坐标表达式改成

就可以访问到需要的内容了
coordinates = geocode_result[0]["geometry"]["location"]

我不明白为什么会这样。 可以访问 Geocode API 发送的 JSON 响应 here。 如果我通过浏览器

使用以下 URL 也会生成此响应
https://maps.googleapis.com/maps/api/geocode/json?address=pune,+IN&key=[My-Key]

(替换您的密钥)

此外,我想知道是否有更 pythonic 的方法来 return 代码。

doc 中所述:

The return type is a list of geocoding results

基本上,geocode 函数 returns 只是您链接到的通常响应中的 results 键。你可以在这里看到:https://github.com/googlemaps/google-maps-services-python/blob/master/googlemaps/geocoding.py#L68