def createRandomObjectDescriptions(numObjects,
                                   numLocationsPerObject,
                                   featurePool=("A", "B", "C")):
  """
  Returns {"Object 1": [(0, "C"), (1, "B"), (2, "C"), ...],
           "Object 2": [(0, "C"), (1, "A"), (2, "B"), ...]}
  """
  return dict(("Object %d" % i,
               zip(xrange(numLocationsPerObject),
                   [random.choice(featurePool)
                    for _ in xrange(numLocationsPerObject)]))
              for i in xrange(1, numObjects + 1))
Returns {"Object 1": [(0, "C"), (1, "B"), (2, "C"), ...],
           "Object 2": [(0, "C"), (1, "A"), (2, "B"), ...]}