我有一定的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(派生值)。
感谢您的任何帮助。
谢谢!
每次说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