content: from typing import List
  
  import numpy as np
  from sklearn.model_selection import KFold
  
  
  def generate_crossval_split(train_identifiers: List[str], seed=12345, n_splits=5) -> List[dict[str, List[str]]]:
      splits = []
      kfold = KFold(n_splits=n_splits, shuffle=True, random_state=seed)
      for i, (train_idx, test_idx) in enumerate(kfold.split(train_identifiers)):
          train_keys = np.array(train_identifiers)[train_idx]
          test_keys = np.array(train_identifiers)[test_idx]
          splits.append({})
          splits[-1]['train'] = list(train_keys)
          splits[-1]['val'] = list(test_keys)
      return splits
  