无法排序 Google 将 ['rating'] 数据放入 python 库

Can't sort Google Places ['rating'] data in python library

当我在做不同的测试时,我发现了一个问题,当我调用 google.places() 时,我无法按 ['rating].values 对数据进行排序。 例如,如果我查询数据并按 ['name'] 排序,它工作得很好。 示例如下:

gmaps = googlemaps.Client(key='key_is_here')
nyc = (40.6971494, -74.2598655)
msk = (55.7535081, 37.6144299)
new_arr = []

params = {
    'query': ['restaurants', 'bakery', 'cafe', 'food'],
    'location': nyc
    'radius': 10000
}


gmapz = gmaps.places(**params)
print sorted(gmapz['results'], key = lambda x : x['name'],reverse = True):
        """ outputs list of dicts """

但是,当我在 lambda 键中使用 ['raiting'] 时,它显示

    Traceback (most recent call last):
  File "/Users/Aleshka/Desktop/teszz.py", line 22, in <module>
    print sorted(gmapz['results'],key = lambda x : x['rating'],reverse=True)
  File "/Users/Aleshka/Desktop/teszz.py", line 22, in <lambda>
    print sorted(gmapz['results'],key = lambda x : x['rating'],reverse=True)
KeyError: 'rating'

表示该键不存在。 一开始我以为可能是google输出unicode格式的原因,但是

>>> u'abc' == 'abc'
True

我也很困惑,因为几天前我能够在纽约(确切地说是曼哈顿)的地方做到这一点,但是当我在不同的地方做了很少的测试并选择了俄罗斯的莫斯科时坏了。不知道出了什么问题。 我认为它可能会发生,因为我达到了查询限制,但事实并非如此。

任何一个结果都可能没有密钥 'rating'。 尝试通过打印没有密钥 'rating'.

的结果来调试它
for res in gmapz['results']:
    if 'rating' not in res.keys():
        print res

现在你知道哪些结果没有任何评级了。

在@Shra1 的大力帮助下,我用

解决了这个问题
print sorted(gmapz['results'], key = lambda x: ('rating' not in x, `x.get('rating',None)),reverse = True)`

显示第一项 w/o 评分,其余按降序排列。