code: def do_find(lookup, term):
      
  
      space = defaultdict(list)
  
      for name in lookup.keys():
          space[name].append(name)
  
      try:
          iter_lookup = lookup.iteritems()  # Python 2
      except AttributeError:
          iter_lookup = lookup.items()  # Python 3
  
      for name, definition in iter_lookup:
          for keyword in definition['keywords']:
              space[keyword].append(name)
          space[definition['category']].append(name)
  
      matches = fnmatch.filter(space.keys(), term)
  
      results = set()
      for match in matches:
          results.update(space[match])
  
      return [(r, translate(lookup, r)) for r in results]
docs: Matches term glob against short-name, keywords and categories.