2013-09-29 110 views
1

我設計了一個計算'CG'出現在字符串中的百分比的代碼; GC_content(DNA)。如何打印變量名稱

現在我可以使用此代碼,以便它打印具有最高GC內容的字符串的值;

print (max((GC_content(DNA1)),(GC_content(DNA2)),(GC_content(DNA3)))). 

現在我該如何打印這個max GC_content的變量名?

+0

要訪問全局名稱空間中的名稱列表,您可以使用'globals()'。 – Shashank

+0

變量名通常不可打印,請參見[在運行時在python中檢索變量名?](http://stackoverflow.com/questions/932818/retrieving-a-variables-name-in-python-at-runtime),但這裏的答案提供了一些很好的解決方法。 – askewchan

回答

5

你可以得到一些元組的max

max_content, max_name = max(
    (GC_content(DNA1), "DNA1"), 
    (GC_content(DNA2), "DNA2"), 
    (GC_content(DNA3), "DNA3") 
) 

print(max_name) 
1

如果有許多DNA變量,你可以將它們放置在列表

DNA_list = [DNA1, DNA2, DNA3] 

我會強迫他們進入字典關聯的名稱與原始數據和結果。

DNA_dict = dict([("DNA%i" % i, {'data': DNA, 'GC': GC_Content(DNA)}) for i, DNA in enumerate(DNA_list)]) 

然後列出理解來獲取數據,你想

name = max([(DNA_dict[key]['GC'], key) for key in DNA_dict])[1] 

這樣具有允許變量列表長度

0

的好處你似乎想

max([DNA1, DNA2, DNA3], key=GC_content) 

這不是你,但它似乎是你需要