code: def shp_dict(shp_fn, fields=None, geom=True):
      
      from pygeotools.lib import timelib
      ds = ogr.Open(shp_fn)
      lyr = ds.GetLayer()
      nfeat = lyr.GetFeatureCount()
      print('%i input features\n' % nfeat)
      if fields is None:
          fields = shp_fieldnames(lyr)
      d_list = []
      for n,feat in enumerate(lyr):
          d = {}
          if geom:
              geom = feat.GetGeometryRef()
              d['geom'] = geom
          for f_name in fields:
              i = str(feat.GetField(f_name))
              if 'date' in f_name:
                  # date_f = f_name
                  #If d is float, clear off decimal
                  i = i.rsplit('.')[0]
                  i = timelib.strptime_fuzzy(str(i))
              d[f_name] = i
          d_list.append(d)
      #d_list_sort = sorted(d_list, key=lambda k: k[date_f])
      return d_list
docs: Get a dictionary for all features in a shapefile
      
      Optionally, specify fields