1

我有来自开放街道地图的数据,格式如下:

</way>
<way id="148531879">
    <nd ref="1616241466"/>
    <nd ref="1616241469"/>
    <nd ref="1616241471"/>
    <nd ref="1616241472"/>
    <nd ref="1616241475"/>
    <nd ref="1616241479"/>
    <nd ref="276928691"/>
    <tag k="highway" v="secondary"/>
    <tag k="lit" v="no"/>
    <tag k="oneway" v="yes"/>
    <tag k="ref" v="L 292"/>
</way>
<way id="10870759">
    <nd ref="96594201"/>
    <nd ref="96594205"/>
    <nd ref="96594209"/>
    <nd ref="96594224"/>
    <tag k="highway" v="residential"/>
    <tag k="maxspeed" v="50"/>
    <tag k="name" v="Rockwellstraße"/>
    <tag k="oneway" v="yes"/>
    <tag k="postal_code" v="38518"/>
</way>
<way id="10522831">
    <nd ref="90664716"/>
    <nd ref="940615687"/>
    <nd ref="2222543788"/>
    <nd ref="940619729"/>
    <nd ref="90664692"/>
    <nd ref="939024170"/>
    <nd ref="298997463"/>
    <tag k="highway" v="residential"/>
    <tag k="name" v="Am Allerkanal"/>
    <tag k="postal_code" v="38518"/>
    <tag k="tracktype" v="grade2"/>
</way>

单个文件包含 1000 个类似的方式 ID。我想将这些方式 id 存储在列表/元组中,但问题是方式 id 中的内容不固定。

例如,“nd ref”条目的数量可以不同。我正在考虑将id数据存储到一个元组中,并在每个包含nd ref数据的元组中包含一个列表。然后最后将所有元组存储在一个列表中。请问是否可行,是否可以通过循环访问所有的enteries?

4

1 回答 1

2

假设方式 id 只有 2 种标签,在这种情况下,如果您想在数据结构中组织输出,将方式 id 及其内容存储在列表中,您可以执行以下操作:

对于每种方式 id,您可以定义一个元组的形式

 t = (way_id,[list of nd ref tags],[list of tag k values])

因此,每个方式 id 都会有一个元组,并且可以随时将这些元组附加到列表中。使用元组的想法更好,因为数据组织得更好,你可以很容易地引用元组的内容:

t[0] -> gives you the way-id
t[1] -> gives you the list of nd-ref values for that id and so on.

元组是不可变的数据结构,从某种意义上说,一旦你定义了一个元组(假设它命名为 't')。您不能更改元组的内容,例如:

t[0] = 34983948 /*Invalid*/

但是元组可以包含可变元素,如列表。关于列表元组的官方 python 文档也可能会派上用场。

于 2013-04-03T10:06:25.527 回答