2011-09-12 28 views
1

我有一個從simplejson.load()函數返回的數據字典(?)。它看起來像這樣...訪問simplejson.load()輸出中的元素

{'status': 'OK', 'results': [{'geometry': {'location_type': 'APPROXIMATE', 'bounds': {'northeast': {'lat': 53.86121, 'lng': -2.045072}, 'southwest': {'lat': 53.80570600000001, 'lng': -2.162588}}, 'viewport': {'northeast': {'lat': 53.8697753, 'lng': -2.0725853}, 'southwest': {'lat': 53.81711019999999, 'lng': -2.2006447}}, 'location': {'lat': 53.84345099999999, 'lng': -2.136615}}, 'address_components': [{'long_name': 'Trawden', 'types': ['sublocality', 'political'], 'short_name': 'Trawden'}, {'long_name': 'Colne', 'types': ['locality', 'political'], 'short_name': 'Colne'}, {'long_name': 'Lancashire', 'types': ['administrative_area_level_2', 'political'], 'short_name': 'Lancs'}, {'long_name': 'United Kingdom', 'types': ['country', 'political'], 'short_name': 'GB'}], 'formatted_address': 'Trawden, Colne, Lancashire, UK', 'types': ['sublocality', 'political']}]} 

我怎麼在例如results-> geometry-> location-> lat?

這個結構是一個普通的Python字典嗎?

編輯:請有人也可以解釋simplejson.dumps()函數。我不覺得這些文檔非常有啓發性。

感謝

編輯非OP:這裏的JSON,漂亮的印刷:

{ 
    "status":"OK", 
    "results":[ 
    { 
     "geometry":{ 
     "location":{ 
      "lat":53.843450999999988, 
      "lng":-2.1366149999999999 
     }, 
     "location_type":"APPROXIMATE", 
     "viewport":{ 
      "northeast":{ 
      "lat":53.869775300000001, 
      "lng":-2.0725853000000001 
      }, 
      "southwest":{ 
      "lat":53.817110199999988, 
      "lng":-2.2006446999999998 
      } 
     }, 
     "bounds":{ 
      "northeast":{ 
      "lat":53.86121, 
      "lng":-2.0450719999999998 
      }, 
      "southwest":{ 
      "lat":53.805706000000008, 
      "lng":-2.162588 
      } 
     } 
     }, 
     "address_components":[ 
     { 
      "long_name":"Trawden", 
      "short_name":"Trawden", 
      "types":[ 
      "sublocality", 
      "political" 
      ] 
     }, 
     { 
      "long_name":"Colne", 
      "short_name":"Colne", 
      "types":[ 
      "locality", 
      "political" 
      ] 
     }, 
     { 
      "long_name":"Lancashire", 
      "short_name":"Lancs", 
      "types":[ 
      "administrative_area_level_2", 
      "political" 
      ] 
     }, 
     { 
      "long_name":"United Kingdom", 
      "short_name":"GB", 
      "types":[ 
      "country", 
      "political" 
      ] 
     } 
     ], 
     "formatted_address":"Trawden, Colne, Lancashire, UK", 
     "types":[ 
     "sublocality", 
     "political" 
     ] 
    } 
    ] 
} 

回答

4

是的,它是。如果你將其存儲在一個名爲d一個變量,那麼你可以使用...

d['results'][0]['geometry']['location'] 

等等。由於密鑰'geometry'的字典在列表中,因此請注意[0]

simplejson.load()將JSON對象映射到Python dict s和JSON列表到list s。非常簡單;千萬不要過時。


simplejson.dumps()簡單地做的simplejson.loads()相反 - 它需要的任何標準Python對象,並且它轉儲到一個字符串,它是該對象的JSON表示。例如:

>>> q = {} 
>>> q['foo'] = 'bar' 
>>> q[1] = 'baz' 
>>> simplejson.dumps(q) 
'{"1": "baz", "foo": "bar"}' 
+0

閱讀已編輯的帖子。 :)看看你的數據如何,它說「結果」:[{'geometry':'...等等?看看在''幾何'之前有'['和''''?這是因爲該結構的特定部分實際上看起來像這樣:'{'A':[{'B':'C'}]}'這是dict-a-list-a-dict中的列表。 – Amber

+0

感謝您的好回答,抱歉打擾,但一些語法混淆了我的地獄。例如在谷歌的例子中,他們得到的數據像這樣...'[s ['geometry'] ['location'] for json ['results']]'這是什麼? – Ferguzz

+0

這是一個列表理解。以下是它們的合理概述:http://www.secnetix.de/olli/Python/list_comprehensions.hawk(或官方文檔:http://docs.python.org/tutorial/datastructures.html#list-comprehensions) – Amber