背景: 我正在給一個現有的類添加一個新的函數,它需要返回一個常量名稱列表。Python:翻譯常量的最佳方法是什麼?
可以說我有一些常量的一類
JOHN = 1
SMITH = 4
BEN = 8
...
而且我有返回,而不是返回[1,4,8]
列表常量值,Web服務功能我想返回如['JOHN', 'SMITH', 'BEN']
更有意義的數據
有效的方法是什麼?
背景: 我正在給一個現有的類添加一個新的函數,它需要返回一個常量名稱列表。Python:翻譯常量的最佳方法是什麼?
可以說我有一些常量的一類
JOHN = 1
SMITH = 4
BEN = 8
...
而且我有返回,而不是返回[1,4,8]
列表常量值,Web服務功能我想返回如['JOHN', 'SMITH', 'BEN']
更有意義的數據
有效的方法是什麼?
您可以使用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]
使用列表理解而不是'map'會導致更多慣用的python代碼,但除此之外,這是最好的方式。 – Voo
我期待着一些我不知道的魔法函數/代碼,看起來我需要使用一個字典,因爲所有的常量已經定義好了,所以我可能必須做'約翰':約翰,'本':BEN } –
重構字典可能會更好,因此只能定義一次。如果你不能做到這一點,當然,你說什麼都可以正常工作(儘管關鍵需要是想要映射的值,而不是你想映射的值)。 –
這是不是很清楚你在問什麼。這個常量列表在哪裏?在網絡服務器上?它如何返回這些常量,服務器端或通過HTTP請求? – jdotjdot
嘗試[flufl.enum](http://packages.python.org/flufl.enum/) – JBernardo
'dict'可能是最簡單的方法。 – sean