2012-07-01 126 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()」。那麼無論如何我可以實現這一點,而不觸及我現有的表單? –