2012-12-19 58 views
1

背景: 我正在給一個現有的類添加一個新的函數,它需要返回一個常量名稱列表。Python:翻譯常量的最佳方法是什麼?

可以說我有一些常量的一類

JOHN = 1 
SMITH = 4 
BEN = 8 
... 

而且我有返回,而不是返回[1,4,8]列表常量值,Web服務功能我想返回如['JOHN', 'SMITH', 'BEN']更有意義的數據

有效的方法是什麼?

+1

這是不是很清楚你在問什麼。這個常量列表在哪裏?在網絡服務器上?它如何返回這些常量,服務器端或通過HTTP請求? – jdotjdot

+0

嘗試[flufl.enum](http://packages.python.org/flufl.enum/) – JBernardo

+0

'dict'可能是最簡單的方法。 – sean

回答

3

您可以使用map()以及映射字典。

arg_map = {1 : 'JOHN', 4 : 'SMITH', 8 : 'BEN'} 
translated_result = map(arg_map.get, result_list) 

正如評論中提到的那樣,列表理解也適用於此。注意你可以通過用方括號替換方括號來使它成爲一個生成器。

arg_map = {1 : 'JOHN', 4 : 'SMITH', 8 : 'BEN'} 
translated_result = [arg_map.get(val, '%s NOT MAPPED' % str(val)) for val in result_list] 
+0

使用列表理解而不是'map'會導致更多慣用的python代碼,但除此之外,這是最好的方式。 – Voo

+0

我期待着一些我不知道的魔法函數/代碼,看起來我需要使用一個字典,因爲所有的常量已經定義好了,所以我可能必須做'約翰':約翰,'本':BEN } –

+0

重構字典可能會更好,因此只能定義一次。如果你不能做到這一點,當然,你說什麼都可以正常工作(儘管關鍵需要是想要映射的值,而不是你想映射的值)。 –

相關問題