Der TeX-Interpreter hat intern Hash-Tables, die er für den Lookup von definierten Makros benutzt. Daher halte ich es für klug für jeden Eintrag in der Liste ein Makros zu definieren und beim holen des Werts zu prüfen, ob das Makro existiert.
existiert. (Der ganze Spaß geht sogar [ohne e-TeX-Extensions](http://hastebin.com/yonaxojewo.tex))
Die Performance habe ich evaluiert, indem ich eine Liste angelegt habe in der Key=Value ist (zwar nutzlos, aber ein einfaches Beispiel).
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\int_step_inline:nnnn { 1 } { 1 } { 5000 }
{ \cs_new:cpn { lookup_table_#1 } { #1 } }
\NewDocumentCommand \Wertsuche {m}
{
#1:~
\cs_if_exist:cTF { lookup_table_#1 }
{ \use:c { lookup_table_#1 } }
{ kein~Wert }
}
\ExplSyntaxOff
\begin{document}
\Wertsuche{500}
\end{document}
Der LaTeX-Aufruf dauert
$ time pdflatex test.tex
real 0m0.321s
user 0m0.300s
sys 0m0.016s
Dasselbe mit Clemens' Lösung:
\documentclass{article}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\tl_new:N \l_meinmodul_tmpa_tl
\prop_new:N \l_meinmodul_liste_prop
\int_step_inline:nnnn { 1 } { 1 } { 5000 }
{ \prop_put:Nnn \l_meinmodul_liste_prop { #1 } { #1 } }
\cs_new_protected:Npn \meinmodul_wertsuche:n #1
{
\prop_get:NnNTF \l_meinmodul_liste_prop {#1} \l_meinmodul_tmpa_tl
{ \tl_use:N \l_meinmodul_tmpa_tl }
{kein~ Wert}
}
\NewDocumentCommand \Wertsuche {m}
{ #1:~ \meinmodul_wertsuche:n {#1} }
\ExplSyntaxOff
\begin{document}
\Wertsuche{500}
\end{document}
Hier dauert es
$ time pdflatex test.tex
real 0m5.964s
user 0m5.920s
sys 0m0.016s