Kurze Klarstellung bzgl TDictionary: Das hier ähnelt wohl eher einer TList<TPair<String, Integer>> als einem TDictionary<String, Integer>, denn es können ja Duplikate im Schlüssel vorkommen.
TDictionary kann m.W. auch so eingestellt werden, dass Duplikate erlaubt sind.
Ist vielleicht nicht ganz im Sinne des Erfinders, aber geht glaube ich schon.