Python:翻译常量的最佳方法?
背景: 我正在向现有类添加一个新函数,该类需要返回常量名称列表 假设我在一个类中有许多常量Python:翻译常量的最佳方法?,python,constants,Python,Constants,背景: 我正在向现有类添加一个新函数,该类需要返回常量名称列表 假设我在一个类中有许多常量 JOHN = 1 SMITH = 4 BEN = 8 ... 我有一个web服务函数,它返回一个列表常量值,而不是返回[1,4,8]我想返回更有意义的数据,比如['JOHN','SMITH','BEN'] 有效的方法是什么?您可以使用map()和映射字典 arg_map = {1 : 'JOHN', 4 : 'SMITH', 8 : 'BEN'} translated_result = map(arg_
JOHN = 1
SMITH = 4
BEN = 8
...
我有一个web服务函数,它返回一个列表常量值,而不是返回[1,4,8]
我想返回更有意义的数据,比如['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]
你问的不是很清楚。这个常量列表在哪里?在web服务器上?如何在服务器端或通过HTTP请求返回这些常量?尝试使用
dict
可能是最简单的方法。使用列表理解而不是map
将有助于生成更为惯用的python代码,但除此之外,这是最好的方法。我期待一些我不知道的神奇函数/代码,看起来我需要使用一个字典,因为所有的常量都已经定义好了,我可能需要做{'JOHN':JOHN,'BEN':BEN}重构到一个字典中可能会更好,这样事情只定义一次。如果你不能做到这一点,当然,你所说的会很好(尽管键需要是要映射到的值,而不是要映射到的值)。列表理解“稍微”过于复杂;)[arg_map[x]for x in args]
将是最简单的解决方案,如果提供了无效的int,将引发异常(比向结果中添加“Not-mapped”字符串更好,但取决于问题)@JamesLin:您可能不必构建单独的对象并显式列出它们。如果这些值可以从它们的名称中识别出来,那么像d={k:getattr(obj,k)for k in dir(obj),如果不是k.startswith(“”)}
将把这些值提取到dict中,而不指定它们。[你也可以反过来做。]