Python:难以理解使用字典和For循环

问题描述 投票:0回答:1

我有一定的C ++经验,我正尝试使用Python进行工作,因此由于该疾病而失业,我可以进入编码Bootcamp。由于某些原因,我在理解字典如何与for循环一起工作方面存在脱节。我知道这是最基本的基本知识,但我感到很愚蠢,但是我一直不停地试图解决这个问题,坦率地说,这非常令人沮丧。

现在让我们编写一些可以继续使用的函数。我们将编写一个名为m_b_data的函数,给定直线的斜率𝑚,y轴截距return将返回一个字典,该字典的x的键指向x_values的列表,y的键指向y_values列表。每个𝑦值都应是所提供的𝑚和𝑏值(对于每个所提供的x_values)的回归线的输出。

我写的是:

def m_b_data(m, b, x_values):
    y_values = {}
    for x in x_values:
       y_values = {"X Values": x, "Y Values": (m*x)+b}   

    return y_values

传递给它的参数:

m_b_data(1.5, 20, [0, 50, 100])

我对此的输出:

{'X值':100,'Y值':170.0}

及其输出内容:

{'x':[0,50,100],'y':[20.0,95.0,170.0]}

所以,据我所知,在我的for循环中,我实际上只是复制最终值。因此,我猜测正在发生的事情是,我只是不断地重新编写字典的第一个键/值对,以便它在循环中进行迭代,但是我没有追加字典来添加新值,而只是不断地覆盖第一对。断开连接是在for循环中添加键/值对的语法和理解,以便它创建包含2个列表的字典,分别表示x(给定值)和y(派生值)。

感谢您的任何帮助。

谢谢!

python dictionary machine-learning syntax regression
1个回答
1
投票

每次说y_values时,您将覆盖y_values = ...。根据您要输出的内容,您的代码应为:

def m_b_data(m, b, x_values):
    y_values = {'x': [], 'y': []}
    for x in x_values:
        y_values['x'].append(x)
        y_values['y'].append(m * x + b)   

return y_values
© www.soinside.com 2019 - 2024. All rights reserved.