Abrufen des eindeutigen Werts des zweiten Felds mit arcpy.da.SearchCursor?


8

Ich habe eine Feature-Class und mit arcpy.da.SearchCursor erhalte ich eindeutige Werte eines Feldes (z. B. Name). Wie kann ich diese Methode verwenden, um den zugehörigen Zeilenwert eines anderen Felds abzurufen (diff field = Name2)?

Bisher verwende ich dies, um eindeutige Werte nur für das Feld Name zu erhalten:

values = [row[0] for row in arcpy.da.SearchCursor(fc, ("Name"))]
    uniqueValues = set(values)
    for value in uniqueValues:  

Wie erhalte ich beim Durchsuchen der Feature-Class auch den Wert eines anderen Felds, Feld Name2?


1
Können Sie etwas mehr Kontext bereitstellen? Was möchten Sie genau tun?
blah238

Antworten:


8

Wörterbuchverständnis:

{row[0]: row[1] for row in arcpy.da.SearchCursor(fc, ("Name", "Name2"))}

Beachten Sie, dass dies nur EINEN Wert pro eindeutigen Namensspaltenwert hat. Sie können auch Sammlungen verwenden, um eine Liste der Name2-Werte abzurufen:

import collections
names = collections.defaultdict(list)

for name1, name2 in arcpy.da.SearchCursor(fc, ("Name", "Name2")):
    names[name1].append(name2)

2

Die Hilfedatei auf SearchCursor (arcpy.da) enthält unten Codebeispiele . Das erste SearchCursor-Beispiel 1 zeigt, wie eine Liste von Feldern abgerufen wird. Weisen Sie die Variablennamen in Ihrem Code den Zeilen [0] und [1] zu.


@con, Die Liste der Felder .format Zeilenmethode hat nicht funktioniert, für Wert in uniqueValues:
Grafik21

2
@ artist21 Können Sie den geänderten Code als Bearbeitung für Ihre zusätzliche Frage veröffentlichen?
Fezter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.