Mais

Como anexar o objeto Extent a valores de chave de dicionário existentes?

Como anexar o objeto Extent a valores de chave de dicionário existentes?


Eu tenho um dicionário cujas chaves são nomes de segmentos de mapa e cujo valor é uma lista de três valores de campo.

Usando um arcpy.da.SearchCursor nos segmentos do mapa FeatureLayer, extraí o objeto de extensão e os nomes dos segmentos.

Usando nomes de segmento de mapa semelhantes, desejo anexar os valores de extensão às chaves de dicionário (para que possa referenciá-los posteriormente). Como eu faria isso, você não pode indexar um objeto Extent.

por exemplo:

{'m32': [7, 10, 13], 'm33': [7, 10, 13]} ...

se transforma em algo como:

{'m32': [7, 10, 13, XMin, Ymin, XMax, YMax], 'm33': [7, 10, 13, XMin, Ymin, XMax, YMax]} ...

para que, ao indexá-lo, eu possa indexar a chave, os valores originais e indexar os valores de extensão.


Para adicionar novos itens a um objeto de lista python, use append. A sintaxe básica é list.append (addedItem). Com um dicionário contendo uma lista, é o dicionário (chave) .append (adicionadoItem).

Aqui está um esqueleto de script que cria um dicionário que tem uma lista de listas como valor:

# Definir variável de classe de recurso relateFC = r "C:  Usuários  OWNER  Documentos  ArcGIS  Centerline_Edit.gdb  CL_INTERSECTIONS_PAIRS" # crie uma lista de campos com o campo relacionado primeiro (ROUTE_NAME), # seguido por campos de classificação (MEASURE ), então rotule os campos (CROSS_STREET) relateFieldsList = ["ROUTE_NAME", "MEASURE", "CROSS_STREET"] # processe um cursor de pesquisa para transferir os dados para o dicionário com arcpy.da.SearchCursor (relateFC, relateFieldsList) as relateRows: para relateRow em relateRows: # armazene o valor da chave em uma variável para que o valor relacione # seja lido apenas uma vez na linha, melhorando a velocidade relateKey = relateRow [0] # se a chave relacionar da linha atual não for encontrada # cria a chave e torna seu valor uma lista de uma lista de valores de campo, se não relateKey em relateDict: # [searchRow [1:]] é uma lista contendo # uma lista de valores de campo após a chave. relateDict [relateKey] = [relateRow [1:]] else: # se a chave relacionar já estiver no dicionário # anexe a próxima lista de valores de campo à # lista existente associada à chave relateDict [relateKey] .append (relateRow [ 1:])