keyField = "OBJECTID" valueField = "DIFFERENT_ID" exampleDict = dict([(searchRow.getValue(keyField), searchRow.getValue(valueField)) for searchRow in arcpy.SearchCursor(myTable)])
exampleDict = dict([(r.KEY, (r.VALUE1, r.VALUE2)) for r in arcpy.SearchCursor(myTbl)])
or better yet...exampleDict = dict([(r.KEY, (r.VALUE1, r.VALUE2)) for r in arcpy.SearchCursor(myTbl)])
# for this example, use the Census 2000 state shapefile myShp = 'R:\\data\\Census\\2000\\Shape\\ST.shp' myDict = dict([((r.ST_ABBREV, f.name), r.getValue(f.name)) for f in ap.ListFields(myShp) for r in ap.SearchCursor(myShp)]) >>> myDict[('WY', 'STATE_NAME')] >>> 'Wyoming' >>> myDict[('MD', 'ID')] >>> '24' #this is the FIPS code for Maryland
valueDict = {r[0]:(r[1],r[2]) for r in arcpy.da.SearchCursor(myFC, ["OID@","ID","NAME"])}
Update: Dictionary comprehensions now suported in Python 2.7, so an updated syntax would look like:valueDict = {r[0]:(r[1],r[2]) for r in arcpy.da.SearchCursor(myFC, ["OID@","ID","NAME"])}
def makeFeatureDict(myFC, keyField, fields): cursorFields = [keyField] + fields valueDict = {r[0]:[v for v in r[1:]] for r in arcpy.da.SearchCursor(myFC, cursorFields)} del cursorFields return valueDict
def makeFeatureDict(myFC, keyField, fields): cursorFields = [keyField] + fields valueDict = {r[0]:r[1:] for r in arcpy.da.SearchCursor(myFC, cursorFields)} del cursorFields return valueDict
How about just leaving the field values (aka the dictionary values) as a tuple?
def makeFeatureDict(myFC, keyField, fields): return {r[0]:r[1:] for r in arcpy.da.SearchCursor(myFC, [keyField] + fields)}
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.