Python 难以创建包含值列表的dict
现在,让我们编写几个函数,我们可以继续使用它们。我们将编写一个名为m_b_data的函数,该函数给定一条直线的斜率,每次编写Python 难以创建包含值列表的dict,python,dictionary,Python,Dictionary,现在,让我们编写几个函数,我们可以继续使用它们。我们将编写一个名为m_b_data的函数,该函数给定一条直线的斜率,每次编写y_值=…时,都会覆盖y_值。根据您想要输出的内容,您的代码应该是: 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
y_值=…
时,都会覆盖y_值。根据您想要输出的内容,您的代码应该是:
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
每次写入y\u值=…
时,都会覆盖y\u值。根据您想要输出的内容,您的代码应该是:
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
问题是,在for循环中,您总是覆盖y_值字典(只有一个键值对),而不是向其中添加项
您的代码应该更像这样:
def m_b_data(m, b, x_values):
y_values = []
for x in x_values:
y_values.append((m*x)+b)
return {
"X": x_values,
"Y": y_values,
}
首先,声明一个列表并循环通过x_值列表,将结果y值添加到该列表中
然后创建字典,它将是:
“X”:[X_值列表]
“Y”:[Y值列表]
(当然,这是考虑到输入x_值是一个列表,如果它是一个字典,您需要进行一些更改,但我假设它是一个列表,因为这是您在调用中使用它的方式:
m_b_data(1.5, 20, [0, 50, 100])
问题是,在for循环中,您总是覆盖y_值字典(只有一个键值对),而不是向其中添加项
您的代码应该更像这样:
def m_b_data(m, b, x_values):
y_values = []
for x in x_values:
y_values.append((m*x)+b)
return {
"X": x_values,
"Y": y_values,
}
首先,声明一个列表并循环通过x_值列表,将结果y值添加到该列表中
然后创建字典,它将是:
“X”:[X_值列表]
“Y”:[Y值列表]
(当然,这是考虑到输入x_值是一个列表,如果它是一个字典,您需要进行一些更改,但我假设它是一个列表,因为这是您在调用中使用它的方式:
m_b_data(1.5, 20, [0, 50, 100])
当来自C++或java背景时,在集合上写很多明确的循环是一种自然的倾向。这不是Python方式。通常可以通过列表理解和生成器表达式来简化这些循环。代码通常会更短,更容易跟随,一个很好的双赢。
让我们尝试这种方法,并构建一个无循环版本。在您的程序中,您试图构建一个dict。让我们看看是否可以直接返回一个dict。我们将一步一步地填写这些部分。首先,dict:
return {
???
}
具有两个键/值对的dict:
return {
"X Values": ???,
"Y Values": ???,
}
现在怎么办?占位符中有什么?第一个是X值列表。您已经有了:它是X\u值
。无需在X\u值
中重复每个X
。让我们直接把它放在目录中
return {
"X Values": x_values,
"Y Values": ???,
}
我们如何处理Y值?这里是列表理解的地方。您希望将公式Y=m*x+b
应用于每个x
值。我们可以在一行中完成所有操作,同时应用公式和构建列表:
return {
"X Values": x_values,
"Y Values": [m*x+b for x in x_values],
}
我们完成了。Python Grand?< /P> < P>当来自C++或java背景时,在集合上写很多显式循环是一种自然倾向。这不是Python方式。通常可以通过列表理解和生成器表达式来简化这些循环。接下来是一场漂亮的胜利
让我们尝试这种方法,并构建一个无循环版本。在您的程序中,您试图构建一个dict。让我们看看是否可以直接返回一个dict。我们将一步一步地填写这些部分。首先,dict:
return {
???
}
具有两个键/值对的dict:
return {
"X Values": ???,
"Y Values": ???,
}
现在怎么办?占位符中有什么?第一个是X值列表。您已经有了:它是X\u值
。无需在X\u值
中重复每个X
。让我们直接把它放在目录中
return {
"X Values": x_values,
"Y Values": ???,
}
我们如何处理Y值?这里是列表理解的地方。您希望将公式Y=m*x+b
应用于每个x
值。我们可以在一行中完成所有操作,同时应用公式和构建列表:
return {
"X Values": x_values,
"Y Values": [m*x+b for x in x_values],
}
我们完成了。Python不是很棒吗?这是一种魔法。我真的很喜欢Python,但这是一种完全不同的思维方式。我习惯于为所有东西编写循环,现在我了解到该语言的一些方法和特性不需要显式的东西。这是某种魔法。我真的很喜欢我喜欢Python,但这是一种完全不同的思维方式。我习惯于为所有内容编写循环,现在我了解到该语言的一些方法和特性不需要任何显式的东西。