I have a dictionary in the form of:
year2018 = {'jan18':(1,2018),'feb18':(2,2018),'mar18':(3,2018), 'apr18':(4,2018),
'may18':(5,2018),'jun18':(6,2018),'jul18':(7,2018),'aug18':(8,2018),
'sept18':(9,2018),'oct18':(10,2018),'nov18':(11,2018),'dec18':(12,2018)
}
I have a data table where each record has Month field and a Year field. I would like to iterate through my dictionary so that while key = jan18, I select records from my table where Month = 1 and Year = 2018, and then export those records to a stand-alone table called jan18: then move on to key = feb18, etc etc. I've tried a couple different approaches, but still not quite getting what I want. Any suggestions are appreciated. (Using a dictionary is cool, but I'm open to all suggestions...)
Solved! Go to Solution.
you ruled out Split By Attributes—Help | ArcGIS Desktop ?
might require adding a temporary field to concatenate your month and year if your data aren't set up for a straight split as is
Hi Joe, I'm not sure what you've attempted but dictionaries are indeed cool. I haven't tested this but give this a whirl:
for key, value in year2018.items(): # Iterate through each key,value pair in the dictionary in_features = in_feature_class # Identify the input feature class out_feature_class = out_path + "_" + key # Identify the filepath output appending the key to identify it where_clause = "Month = '" + str(value[0]) + "' AND Year = '" + str(value[1]) + "'" arcpy.Select_analysis(in_features, out_feature_class, where_clause)
Thanks- I'm working on a table, not a feature class so I don't think Select_Analysis() will work. However, If I make a table view first, and run my selections on it, this should give me what I'm after....
you ruled out Split By Attributes—Help | ArcGIS Desktop ?
might require adding a temporary field to concatenate your month and year if your data aren't set up for a straight split as is
I've never used this tool before: it's my new favorite. It's fun to write python and do all sorts of elaborate gyrations, but hey, this is slick!
Joe... 15 years ago or so...
When it wasn't free. Mine still has the better Thumbnail
Then use Table Select—Help | ArcGIS Desktop instead.
You can iterate through a dictionary, but some simple loops are easy. Just ideas..
months = {1:'jan',2:'feb',3:'mar',4:'apr',5:'may',6:'jun',7:'jul',8:'aug',9:'sep',10:'oct',11:'nov',12:'dec'}
for yr in range(2018,2019): # stop when 2019 is reached
for mo in months:
print yr, mo, months[mo]
print "Month = {} AND Year = {}".format(mo,yr)
print "{}_{}".format(months[mo], yr)
''' prints:
2018 1 jan
Month = 1 AND Year = 2018
jan_2018
... etc.
'''
for yr in range(2018, 2019): # stop when 2019 is reached
for mo in range(1,13): # stop when 2019 is reached
print yr, mo
''' prints
2018 1
2018 2
...
2018 11
2018 12
'''