Python:在元组中列出

时间:2013-04-03 09:46:30

标签: python list python-2.7 tuples

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

</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数据的元组中包含一个列表。然后最终将所有元组存储在一个列表中。请说明它是否可行,我是否可以通过循环访问所有的肠道?

1 个答案:

答案 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文档也可能派上用场。