我有一个字典,其中每个键对应于一个具有相同数量值的列表。我将每个列表视为一个“列”。使用每个列表中的值,我尝试编写一个线性近似函数。它可以工作,除非我遇到一个值在列表中重复的问题。当我使用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作为2的y值,而不是24。因为如果我使用indexof,它只会在2的第一个实例中返回相应的值,它将是24而不是21。
发布于 2018-06-27 02:28:56
如果要遍历列表,可以同时遍历这两个列表,如下所示
for value1, value2 in zip(dictionary_name[key1],dictionary_name[key2]):
do something
这样,您就可以确定在每个列表中查看的是相同的索引。不过,您并不是直接通过值来查找它们。这有帮助吗?
发布于 2018-07-04 04:02:07
Numpy array是一个很好的选择,但我找不到一个不需要我重新构建整个程序的好答案。我通过更改calc_target函数的传入参数来包含index1和index2值,从而解决了这个问题。这些索引分别代表x1和x2的索引。然后,当我得到'y值‘时,我只使用这些索引值。
https://stackoverflow.com/questions/51049117
复制相似问题