2013-04-03 3 views
1

У меня есть данные из открытых карт улиц в формате:Python: список в кортеже

</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> 

Один файл содержит 1000s подобного способа идентификаторов. Я хочу сохранить эти идентификаторы пути в списке/кортеже, но проблема в том, что содержимое в пути id не исправлено.

Например, число 'nd ref' enteries может быть различным. Я думал о том, чтобы хранить данные идентификатора пути в кортеже, а также включать список в каждый кортеж, содержащий данные nd ref. Затем, наконец, сохраняем все кортежи в одном списке. Пожалуйста, предложите, насколько это возможно, и смогу ли я получить доступ ко всем энтехам через цикл?

ответ

2

Если предположить, что путь идентификаторов имеют только два вида тегов, в этом случае, и если вы хотите организовать вывод в структуре данных, хранение пути иды и содержания их в списке, вы могли бы сделать что-то вроде:

Для каждого пути ид, можно определить кортеж вида

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

Таким образом, вы будете иметь кортеж для каждого пути ид и вы могли бы добавить в этот кортежей в список, как вы идете. Идея использования кортежа лучше, так как данные организованы лучше, и вы можете обратиться к содержанию кортежей очень легко:

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 на lists и tuples также может пригодиться.

+0

thnx vivek, я попробую этот подход – tanzil

Смежные вопросы