通过在 fastAPI 中从 json 数组中放入同一组的其他 2 个参数来获取值

get value by putting 2 other parameters of the same set from json array in fastAPI

我想通过把node1和node2的值来获取pred的值:

这是我的数据数组

prediction_data =[
  { "node1": 0, "node2": 1, "pred": 0},
  { "node1": 0, "node2": 476, "pred":0.352956 },
  { "node1": 0, "node2": 494, "pred":0.769988 },
  { "node1": 1, "node2": 505, "pred":0.463901 },
  { "node1": 9, "node2": 68 , "pred":1.238807},
    ]

这是我尝试过的,我是 API 新手

  1. 这给了我所有数据
@app.get("/data/")
async def get_all_predictions(skip: int = 0, limit: int = 10):
    return prediction_data[skip : skip + limit]
  1. 这是想要的功能,但当然是错误的
@app.get("/data/{node1,node2}")
async def getPredOfN1andN2(node1,node2):
  if (node1 in prediction_data.node1) and (node2 in prediction_data.node2):
    result = prediction_data[pred]
  return result

例如,我想写 0 和 1 并得到结果 pred = 0

您可以使用内置的 filter 函数过滤列表:

async def getPredOfN1andN2(node1: int, node2: int):
    matching = list(filter(lambda x: x['node1'] == node1 and x['node2'] == node2, prediction_data))

    return matching[0]['pred'] if matching else None

如果可能有多个匹配项,请删除 [0] 并只 return 整个列表。