2012-07-01 124 views
-1

假设我有一个主要形式命名为“main_form”我有几个形式的名称,比如“w_main_form”,“g_main_form‘等等等,这是基于’main_form”,他们根据变化'category'。最简单的方法

现在有什么简单的方法来生成派生形式的名称以及如何调用它们。

设类别为“iron”那么表单名称应该是“w_main_form”当类别为“coal”的形式,名称应该是“g_main_form”。

+0

假设类别是“铁”,那么表单名称应该是“w_main_form”当类别为“煤“表单名称应该是”g_main_form“?你现在可以帮忙吗? –

+0

什么决定了一个类别的表单名称?如果它不能被计算,那么使用一个字典来查找它。不知道你的意思是“如何调用它们” - 它们是否可以调用,比如'w_main_form()'? – martineau

回答

2
>>> main_name = "main_form" 
>>> derived_names = [] 
>>> for prefix in ["w_", "g_"]: 
    derived_names.append("%s%s" % (prefix, main_name)) 


>>> derived_names 
['w_main_form', 'g_main_form'] 

或者,与列表理解(我的首选方法):

>>> derived_names = ["%s%s" % (prefix, main_name) for prefix in ["w_", "g_"]] 
>>> derived_names 
['w_main_form', 'g_main_form'] 

在一般情况下,这样你就可以自己申请同样的原则,你要想想你想在方面做了变换的功能f(main_name, data)data提供给它。在这种情况下,操作是“前置”(我使用"%s%s" % (prefix, main_name)实施),数据是所有前缀。

编辑:是的。

>>> category_to_prefix = {'iron': 'w_', 'coal': 'g_'} 
>>> def category_to_form_name(category): 
    return '%s%s' % (category_to_prefix.get(category,""), 'main_form') 

>>> category_to_form_name('iron') 
'w_main_form' 
>>> category_to_form_name('coal') 
'g_main_form' 
>>> category_to_form_name(None) 
'main_form' 

请注意并接受答案(点击向上箭头和绿色复选标记),如果它是你正在寻找的。

+0

假设类别是“铁”,那么表单名称应该是“w_main_form”,并且当类别是“煤”时,表单名称应该是“g_main_form”?您现在可以帮忙吗? –

1

这将做您的评论说什么..

def generate_Name(base, category): 
    if category == 'iron': 
     derived_name = 'w_'+base 
    elif category == 'coal': 
     derived_name = 'g_'+base 

    return derived_name 


iron_form = generate_Name('main_form', 'iron') 
coal_form = generate_Name('main_form', 'coal') 

print iron_form 
print coal_form 

w_main_form 
g_main_form 
+2

@Claudiu同意,这是更好的完成字典 – Claudiu

+0

! ..我会离开这个作为一个简单的文字替代功能(但不如使用字典:) – Levon

+0

和我怎样才能调用这些生成的名称?就像我必须调用“w_main_form(”argument1“,”argument2 “)”。如何做到这一点。我也不想修改“w_main_form()”。那么无论如何我可以实现这一点,而不触及我现有的表单? –