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?

Artwork21
quelle
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)
Jason Scheirer
quelle
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.

ccn
quelle
@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