我有来自开放街道地图的数据,格式为:
</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
数据的元组中包含一个列表。然后最终将所有元组存储在一个列表中。请说明它是否可行,我是否可以通过循环访问所有的肠道?
答案 0 :(得分: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*/
但是元组可以包含像列表这样的可变元素。 <{3}}和lists上的官方python文档也可能派上用场。