如果不使用numpy数组,如何从python字典访问“行”的元素

2024-06-02 04:57:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,每个键对应一个具有相同数值的列表。我把每个列表都当作一个“列”。使用每个列表中的值,我试图编写一个线性近似函数。它可以工作,除非我遇到一个值在列表中重复的问题。当我使用indexof时,它返回一个y值,对应于传入的x值的第一次出现,而不是实际的y值,该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

enter image description here 例如,如果我的x值是3,并且列表中的第二个2对应于键2,那么如何确保我得到的y值是21而不是24。因为如果我使用indexof,它只会在2的第一个实例返回相应的值,即24而不是21。你知道吗


Tags: target列表data字典valuetypeslopeprint
2条回答

Numpy数组是一个很好的选择,但我找不到一个好的答案,不需要我重组我的整个程序。我通过更改calc\u target函数的传入参数以包含index1和index2值来解决这个问题。这些指标分别代表x1和x2的指标。当我得到“y值”时,我只使用这些索引值。你知道吗

如果要遍历列表,可以同时遍历这两个列表,如

for value1, value2 in zip(dictionary_name[key1],dictionary_name[key2]):
    do something

这样,您就可以确保在每个列表中查看相同的索引。不过,您并不是直接按值查找它们。有帮助吗?你知道吗

相关问题 更多 >