Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:翻译常量的最佳方法?_Python_Constants - Fatal编程技术网

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中,而不指定它们。[你也可以反过来做。]