2013-09-29 2 views
1

Я разработал код, который вычисляет процент «CG», отображается в строке; GC_content (ДНК).Как напечатать имя переменной

Теперь я могу использовать этот код, чтобы он печатал значение строки с самым высоким содержанием GC;

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

Теперь, как я могу напечатать имя переменной этого максимального 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_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) 

Это не то, что вы спросил для, но это похоже на то, что вы необходимо.

Смежные вопросы