У меня есть словарь, в котором каждый ключ соответствует списку с одинаковым количеством значений. Я рассматриваю каждый список как «столбец». Используя значения в каждом списке, я пытаюсь написать функцию линейного приближения. Это работает за исключением случаев, когда я сталкиваюсь с проблемой повторения значения в списке. Когда я использую indexof, он возвращает значение y, которое соответствует первому вхождению переданного значения x, а не фактическому значению y, имеющему тот же индекс в своем собственном списке, что и индекс значения x в соответствующем списке. Я изменяю свой словарь в пустую матрицу? Или есть способ сделать это с помощью словаря.
def calc_target(x1, x2, type1, type2, X):
"""Uses linear approximation to return a calculated
value for the passed in type using a target value.
Keyword arguments:
x1 -- first x value
x2 -- second x value
type1 -- type of value to be calculated
type2 -- type of value passed in
X -- target value
"""
y2 = float(data[type1][data[type2].index(str(x2))])
y1 = float(data[type1][data[type2].index(str(x1))])
print 'X:'
print x1
print x2
print 'Y:'
print y1
print y2
slope = (y2 - y1)/(x2 - x1)
print slope
return slope * (X - x1) + y1
Например, если мои значения x равны 3, а вторые 2 в списке соответствуют ключу 2, как я могу убедиться, что я получаю 21 в качестве значения y для 2, а не 24. Поскольку, если я использую indexof, он просто вернуть соответствующее значение в первом экземпляре 2, которое будет 24, а не 21.