Главный вопрос здесь - что вы планируете делать со всеми этими персонажами?Какова цель вашей программы?Оставляя это в стороне, вы можете искать одну букву и фильтровать как по основному навыку, так и по миру (используя двойной цикл).Крайне маловероятно, что у вас когда-либо будет более 1000 попаданий для любой согласной.Если вы хотите найти имя, начинающееся с гласного, то используйте bigraph vowel-other_letter в цикле, который перебирает other_letter от A до Z.
Дополнительная оптимизация - попытаться угадать, с какой страницы начнется список с нужной буквой,Если у вас есть общее количество страниц (TNOP), тогда ваш список начнется где-то рядом со страницей TNOP * LETTER / 27, где LETTER - это порядок буквы в алфавите.