2010-06-19 110 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