3
我希望有一個在試圖避免有條件的if/elif的語句這樣的長鏈沒有性能或其他缺點:Python中的字典是否提供了制定類似開關語句的最佳方式?
errstr = {404: "404 Not Found",
405: "405 Method Not Allowed"}
if code in errstr:
print errstr[code];
我希望有一個在試圖避免有條件的if/elif的語句這樣的長鏈沒有性能或其他缺點:Python中的字典是否提供了制定類似開關語句的最佳方式?
errstr = {404: "404 Not Found",
405: "405 Method Not Allowed"}
if code in errstr:
print errstr[code];
是的,他們是最好的解決方案,因爲它們是作爲哈希表來實現,給出大致恆定的查找時間(如果哈希函數是好的)。二叉樹會給出對數查找時間,if
鏈式時間。如果必須表示從不太大的有限集到其他集的映射,則散列表通常是要走的路。
順便說一句,Python是一種很好的學習語言,因爲在Python中,通常最簡單的解決方案也是最好的。
非常感謝Philipp!我非常感謝你的及時答覆和見解。 – Lost 2010-06-29 13:26:11
@Ryan:作爲一個相反的例子,我會命名Bash之類的語言:如果你想遍歷數組* * X *,你必須指定它爲'「$ {X [@]}」' - 將大括號或括號或引號會做些什麼,但不是意圖的。這裏正確的解決方案非常複雜。 – Philipp 2010-06-29 13:45:40
這是一個語法主義,而不是「解決方案」。 – 2010-08-02 15:26:56