code: def _index_column_set(
      column_set: List[ColumnSchema],
  ) -> List[Tuple[str, int]]:
      """
      Indexes input set to find types of columns and the quantity of each
  
      Args:
          column_set (List(ColumnSchema)):
              List of Column types needed by associated primitive.
  
      Returns:
          List[Tuple[str, int]]
              A list of key, count tuples
  
      Examples:
          .. code-block:: python
  
              from featuretools.feature_discovery.feature_discovery import _index_column_set
              from woodwork.column_schema import ColumnSchema
  
              column_set = [ColumnSchema(semantic_tags={"numeric"}), ColumnSchema(semantic_tags={"numeric"})]
              indexed_column_set = _index_column_set(column_set)
              [("numeric": 2)]
      """
      out = defaultdict(int)
      for column_schema in column_set:
          key = column_schema_to_keys(column_schema)
          out[key] += 1
      return list(out.items())
  
file_path: featuretools/featuretools/feature_discovery/feature_discovery.py
imports: import inspect
  from collections import defaultdict
  from itertools import combinations, permutations, product
  from typing import Iterable, List, Set, Tuple, Type, Union, cast
  from woodwork.column_schema import ColumnSchema
  from woodwork.logical_types import LogicalType
  from woodwork.table_schema import TableSchema
  from featuretools.feature_discovery.FeatureCollection import FeatureCollection
  from featuretools.feature_discovery.LiteFeature import LiteFeature
  from featuretools.feature_discovery.utils import column_schema_to_keys
  from featuretools.primitives.base.primitive_base import PrimitiveBase
  from featuretools.tests.testing_utils.generate_fake_dataframe import flatten_list
label_desc: Use image node_id 1 for calling a global function with example usage: _index_column_set(column_set) and returns: list