2016-02-14 3 views
0

В приведенном ниже коде я пытаюсь получить доступ к значению словаря значения в функции MinimunSkew ниже. Если словарь хранится в переменной s, и я повторяю значения, чтобы найти все индексы переменной m, следующий код дает мне первый индекс, а не второй и т. Д.:Указатель значения словаря

для i в s.values ​​(): position = s.values ​​(). Index (m)

Как получить все индексы в словаре значения переменной m?

Полный код: Геном = "TAAAGACTGCCGAGAGGCCAACACGAGTGCTAGAACGAGGGGCGTAAACGCGGGTCCGAT"

def Skew(Genome): 
skew = {} 
n = len(Genome) 
skew[0]=0 
for i in range(1,n+1): 
    skew[i] = skew[i-1] 
    if Genome[i-1] == "G": 
     skew[i] = skew[i-1]+1 
    elif Genome[i-1] == "C": 
     skew[i] = skew[i-1]-1 
    else: 
     skew[i]=skew[i-1] 
return skew 
Skew(Genome) 


def MinimumSkew(Genome): 
positions=[] 
s = Skew(Genome) 
m = min(s.values()) 

for i in s.values(): 
    positions = s.values().index(m) 

return positions 
print MinimumSkew(Genome) 

ответ

0

Ваш цикл из MinimumSkew не возвращает позицию, потому что словарь не имеет атрибута индекса. min (s.values ​​()) возвращает только самое низкое значение dict. Вам нужно изменить свой код. Вот модифицированная версия:

def MinimumSkew(Genome): 
      positions =[] 
      s = Skew(Genome) 
      minimumValue = min(s.values()) 

      for (k,v) in s.items(): 
       if v == minimumValue: 
        positions.append(k) 
      return positions 

Genome = "GCATGCTTCGCATATGCTTGAACAACG" 
print(MinimumSkew(Genome)) 

Выход: [26]

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