Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 难以创建包含值列表的dict_Python_Dictionary - Fatal编程技术网

Python 难以创建包含值列表的dict

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

现在,让我们编写几个函数,我们可以继续使用它们。我们将编写一个名为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 + 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,但这是一种完全不同的思维方式。我习惯于为所有内容编写循环,现在我了解到该语言的一些方法和特性不需要任何显式的东西。