Python | 如何创建复杂字典

4 投票
3 回答
7827 浏览
提问于 2025-04-16 00:10

我想创建一个数据结构,能够被解析成JSON对象。输出的结果必须像这样,并且这个数据结构应该是动态的。

{"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 个回答

0

你到底是什么意思呢?如果你创建一个由字典和列表组成的数据结构(就像你给出的例子那样),你总是可以使用json包把它转换成一个JSON对象。

6

针对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

4

你的问题不太清楚,不过你可能想要的是这样的内容:

>>> 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" 的数据条目等等。

撰写回答