小编mac*_*912的帖子

检查Python字典是否相等,允许浮点数有较小的差异

对于没有浮点数的字典,我们使用简单的a == bwhereabare python 字典。这很有效,直到我们最终在其中某处得到ab包含浮点数。它们是嵌套字典,所以我认为这会带来pytest.approx麻烦。

我们想要的是告诉我们这两个字典相等(或近似相等,但仅在浮点近似时不会失败)的东西:

{"foo": {"bar": 0.30000001}} == {"foo": {"bar": 0.30000002}}

pytest.approx()几乎是我想要的,但它不支持嵌套字典。有什么东西可以做我想做的事吗?

python pytest

12
推荐指数
1
解决办法
5006
查看次数

如何使用 FastAPI 的“response_model_exclude_none=True”从嵌套模型中排除“None”值?

FastAPI 显示您可以response_model_exclude_none=True在装饰器中设置为省略值为 的字段Nonehttps://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter

我想这样做,但None我想要排除的字段嵌套在父响应模型中。IE

class InnerResponse(BaseModel):
    id: int
    name: Optional[str] = None

class Response(BaseModel):
    experience: int
    prices: List[InnerResponse]


@app.post("/dummy", response_model=apitypes.Response, response_model_exclude_none=True)
async def backend_dummy(payload: apitypes.Request):
...
Run Code Online (Sandbox Code Playgroud)

然而,当我收到回复时,这里的“价格”列表仍然InnerResponse"name": null.

有没有办法在嵌套模型上应用排除规则?

pydantic fastapi

12
推荐指数
1
解决办法
2万
查看次数

创建自定义vim语法:我可以设置自定义自动缩进规则吗?

我正在为vim创建一个自定义语法文件,为了使代码更容易阅读,我想告诉vim如何自动缩进代码.现在,我gg=G''在vim中的通常重新缩进只是摆脱了每行开头的所有空格:

IF (@("X_17") = "X") THEN
*Make sure only one is selected
countX = 0;
IF (@("X_19") = "X") THEN
countX += 1;
END
IF (@("X_20") = "X") THEN
countX += 1;
END
IF (@("X_21") = "X") THEN
countX += 1;
END
...
Run Code Online (Sandbox Code Playgroud)

我想设置它以便注释(以*开头)根本没有缩进(在行的开头没有空格),但其余的是基于IF和END缩进的.正确缩进的相同代码(假设即使第一个IF在更大的IF/END块内):

    IF (@("X_17") = "X") THEN
*Make sure only one is selected
        countX = 0;
        IF (@("X_19") = "X") THEN
            countX += 1;
        END
        IF (@("X_20") = "X") THEN
            countX += 1;
        END
        IF (@("X_21") …
Run Code Online (Sandbox Code Playgroud)

vim

9
推荐指数
1
解决办法
2851
查看次数

haskell方式接受用户输入用户输入的次数?

我刚刚开始学习haskell,这是一种与我习惯的(C风格语言)不同的思维方式.

无论如何,对于我正在研究的一个问题,我需要接收用户输入.它将以形式出现

2
10
20
Run Code Online (Sandbox Code Playgroud)

例如.格式是第一行表示后面的行数.我的第一个想法是,我会读取第一行,然后循环运行这么多次.这是Haskell!据我所知,循环是不可能的.

我的下一个想法是,我将使用第一行输入来填充列表,其中包含其他n个数字.我不知道怎么会这样做.我在这里,因为我甚至不确定我会搜索什么来解决它.

在此先感谢我向我展示了哈克尔的做法.到目前为止这是艰难的,但我听到了"开悟"的人的好评,所以我觉得自己学习语言不会有什么坏处.

这里的代码只运行一次,但需要为第一行后面的第二行到第n行运行一次.

l n = (-1)^n/(2*(fromIntegral n)+1)
a m = sum [l n | n <- [0..(m-1)]]
main =
    do  b <- readLn
        print (a b)
Run Code Online (Sandbox Code Playgroud)

(另外,我很想知道我是否可以对我的代码进行其他改进,但在这种特殊情况下,竞争是以尽可能少的字符解决问题.我不想得到更多其他人试图寻找同一问题的答案.)

编辑:谢谢大家的答案.我最终得到的东西表现得我想要它.我把下面的代码放在后代.可悲的是,即使它通过了测试用例,它们测试的实际数据也不同,他们告诉我的只是我得到了"错误的答案".此代码"有效",但没有得到正确的答案.

import Control.Monad
l n = (-1)^n/(2*(fromIntegral n)+1)
a m = sum [l n | n <- [0..(m-1)]]
main =
    do  b <- readLn
        s <- replicateM b readLn
        mapM_ print [a c | c <- s]
Run Code Online (Sandbox Code Playgroud)

haskell

8
推荐指数
2
解决办法
832
查看次数

如何用旧代码替换trunk中的所有代码?

一个合作伙伴和我正在使用svn作为一个类的合作伙伴项目,我们最初使用我们的主干中的代码走错了方向.我们得到了修订版129,然后才意识到我们将从修订版113开始更好,并朝着不同的方向前进.

在我自己的计算机上,我检查了修订版113,进行了更改,并希望提交我的代码.但是,当我尝试提交时,我得到了这个:

svn: Commit failed (details follow):
svn: File or directory 'Robot.cpp' is out of date; try updating
svn: resource out of date; try updating
Run Code Online (Sandbox Code Playgroud)

问题是,我不想更新.我不希望我们从版本113到129做出的所有更改,并且基本上想要用我在本地的内容替换存储库中的所有代码.我该怎么做?

svn merge

5
推荐指数
1
解决办法
118
查看次数

标签 统计

fastapi ×1

haskell ×1

merge ×1

pydantic ×1

pytest ×1

python ×1

svn ×1

vim ×1