2010-06-19 105 views
4

我想創建一個數據結構,將被解析爲JSON對象。輸出必須看起來像這樣,這應該是一個動態的數據結構。Python |如何創建複雜的字典

{"data": [{"type": "locale", "lat": -34.43778387240597, "lon": 150.04799169921876}, 
{"type": "poi", "lat": -34.96615974838191, "lon": 149.89967626953126}, 
{"type": "locale", "lat": -34.72271328279892, "lon": 150.46547216796876}, 
{"type": "poi", "lat": -34.67303411621243, "lon": 149.96559423828126}]} 

我在實現這個數據結構的過程中掙扎着,所以期待着一些好的想法。

謝謝

回答

3

你的問題還不清楚,但你想大概是這樣的:

>>> r = DataResult() 
>>> r.add_poi(-34.96615974838191, 149.89967626953126) 
>>> r.add_locale(-34.72271328279892, 150.46547216796876) 
>>>r.add_poi(-34.67303411621243, 149.96559423828126) 

>>> print r 
{"data": [{"type": "locale", "lat": -34.43778387240597, "lon": 150.04799169921876}, 
{"type": "poi", "lat": -34.96615974838191, "lon": 149.89967626953126}, 
{"type": "locale", "lat": -34.72271328279892, "lon": 150.46547216796876}, 
{"type": "poi", "lat": -34.67303411621243, "lon": 149.96559423828126}]} 

您可以通過創建DataResult類和覆蓋__str____unicode__方法來創建此類。

add_poi可以是這樣的:

def add_poi(self, lat, lon): 
    self.append(PoiData(lat, lon)) 

其中PoiData是代表型「POI」的數據錄入另一個類等

0

你究竟是什麼意思?如果您創建了一個由指令和列表組成的數據結構(如您所提供的數據結構),則始終可以使用the json package將其解析爲JSON對象。

+0

是的,是可以做到的,但我的問題是創建數據結構體。 – Switch 2010-06-19 09:38:25

5

作爲對Mathiasdm的評論回覆: 您的意思是如何創建詞典與詞典列表? 可以這樣做:

dict = {} 
dict["data"] = [] 
dict["data"].append({'type': 'poi', 'lat': 123}) 
dict["data"].append({'type': 'locale', 'lat': 321}) 

等等。

但是,如果這是真正問題所在,我會建議再次讀取列表和字典參考: http://docs.python.org/tutorial/datastructures.html