Предлагает ли словари в Python лучший способ формулировать операторы, подобные переключателям? - PullRequest
3 голосов
/ 29 июня 2010

Я надеюсь, что в попытке избежать длинных цепочек условных операторов if / elif таким способом нет производительности или других недостатков:

errstr = {404: "404 Not Found",
          405: "405 Method Not Allowed"}
if code in errstr:
       print errstr[code];

1 Ответ

4 голосов
/ 29 июня 2010

Да, это лучшее решение, потому что они реализованы в виде хеш-таблиц, обеспечивая приблизительно постоянное время поиска (если хеш-функция хороша). Двоичные деревья дают логарифмическое время поиска, if цепочки линейного времени. Хеш-таблицы обычно подходят, если нужно представить отображение из не слишком большого конечного набора в какой-либо другой набор.

Кстати, Python - очень хороший язык для изучения, потому что в Python часто самое простое решение также является лучшим.

...