2017-11-22 6 views
-1

私は別のテストを行っていましたが、google.places()を呼び出すとデータを[評価] .valuesで並べ替えることはできません。 たとえば、データを照会し[[名前]]でソートすると、正常に動作します。以下 例:私はラムダキーで[ 'raiting']を使用する場合PythonライブラリのGoogleプレイス['評価']データを並べ替えることができません

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 """ 

しかし、私は、それがこのキーが存在しないことを意味している

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 

は、私は、同様に本当に混乱しています厳密に言えば)、私は別の場所でいくつかのテストをしてモスクワを選んだとき、ロシアはそれを破った。何が間違っているのか分からない。 クエリの制限に達したために起こりうると思っていましたが、そうではありません。

+0

私はそれが1位の評価を示してい 印刷gmapz [「結果」] [0] [「評価」]のようにそれを行う場合。私は今さらに混乱している – nexla

答えて

0

結果のいずれかに「評価」キーがない可能性があります。 キー「評価」を持たない結果を印刷して、デバッグを試みてください。

for res in gmapz['results']: 
    if 'rating' not in res.keys(): 
     print res 

ここで、どの評価が評価されていないかが分かります。 Shra1 @の大きな助けと

+0

私は十分なテストをしなかったように感じる。確かにそうだった。 – nexla

0

I/Oの評価と降順でソート残りワット

print sorted(gmapz['results'], key = lambda x: ('rating' not in x, `x.get('rating',None)),reverse = True)` 

を表示最初の項目に問題を修正しました。

関連する問題