Я довольно новичок в Python и Qgis, прямо сейчас я просто запускаю скрипты, но я хочу, чтобы создать плагин.Как извлечь часть кортежа, дублирующего как ключ словаря, и вторую часть кортежа как значение?
Вот часть кода у меня возникают проблемы, связанные с:
import math
layer = qgis.utils.iface.activeLayer()
iter = layer.getFeatures()
dict = {}
#iterate over features
for feature in iter:
#print feature.id()
geom = feature.geometry()
coord = geom.asPolyline()
points=geom.asPolyline()
#get Endpoints
first = points[0]
last = points[-1]
#Assemble Features
dict[feature.id() ]= [first, last]
print dict
Это мой результат: {0L: [(355277,6.68901e + 06), (355385,6.68906e + 06), 1L: [(355238,6,68909e + 06), (355340,6,68915e + 06)], 2L: [(355340,6,68915e + 06), (355452,6,68921e + 06)], 3L: [ (355340,6,68915e + 06), (355364,6,6891e + 06)], 4L: [(355364,6,6891e + 06), (355385,6,68906e + 06)], 5L: [(355261,6,68905e + 06), (355364,6,6891e + 06)], 6L: [(355364,6,6891e + 06), (355481,6,68916e + 06)], 7L: [(355385,6,68906e + 06), (355501, 6.68912e + 06)]}
Как вы можете видеть, многие из линий имеют общая конечная точка: (355385,6,68906e + 06) используется, например, 7L, 4L и 0L.
Я хотел бы создать новый словарь, получить общие точки в качестве ключа и иметь вторые значения в качестве значения.
например: {(355385,6.68906e + 06): [(355277,6.68901e + 06), (355364,6.6891e + 06), (355501,6.68912e + 06)]}
Я были просмотрены учебники по пониманию списка, но без особого успеха: большинство людей хотят удалить дубликаты, тогда как я бы хотел использовать их как ключи (с уникальными идентификаторами). Правильно ли в мышлении set() все равно будет полезно?
Я был бы очень признателен за любую помощь, спасибо заранее.
Re недавно удаленные вопрос: http://paste.ubuntu.com/18993669/ – Tim