查询参数只返回一个结果
Query parameter only returning one result
我似乎无法理解为什么以下只返回第一个结果?当有多个同名的学生时,我显然正在翻阅字典。有什么想法吗?
students = {
1: {
"name": "John",
"age": 18,
"hobbies": ["Programming", "Swimming", "working out"]
},
2: {
"name": "John",
"lol": "random",
"age": 18,
"hobbies": ["Programming, swimming, working out"]
},
3: {
"name": "Bob",
"age": 18,
"hobbies": ["Programming", "Swimming", "working out"]
},
}
@app.get("/get-student")
async def get_student_by_name(name : str):
for id in students:
if students[id]["name"] == name:
return students[id]
return {"Data": "Student not found"}
返回的结果永远是字典中的第一个
这将不起作用,因为您在循环内使用 'return' 语句,例如,如果您正在寻找 'john' 第一次找到此参数 return 是执行和功能结束。
例如,您可以保存这些值并 return 它们全部,让我告诉您:
- 而不是 return,在函数的开头声明一个列表 ids = [],每次找到 john 时,将 id 添加到结果列表中,ids.append(students[id ]).最后在循环之后只是 return ids 列表,或者如果 len(ids) 是 0 只是 return None 用于错误管理。
代码示例:
@app.get("/get-student")
async def get_student_by_name(name : str):
ids = []
for id in students:
if students[id]["name"] == name:
ids.append(students[id])
if len(ids) is 0:
return {"Data": "Student not found"}
else:
return ids
我似乎无法理解为什么以下只返回第一个结果?当有多个同名的学生时,我显然正在翻阅字典。有什么想法吗?
students = {
1: {
"name": "John",
"age": 18,
"hobbies": ["Programming", "Swimming", "working out"]
},
2: {
"name": "John",
"lol": "random",
"age": 18,
"hobbies": ["Programming, swimming, working out"]
},
3: {
"name": "Bob",
"age": 18,
"hobbies": ["Programming", "Swimming", "working out"]
},
}
@app.get("/get-student")
async def get_student_by_name(name : str):
for id in students:
if students[id]["name"] == name:
return students[id]
return {"Data": "Student not found"}
返回的结果永远是字典中的第一个
这将不起作用,因为您在循环内使用 'return' 语句,例如,如果您正在寻找 'john' 第一次找到此参数 return 是执行和功能结束。 例如,您可以保存这些值并 return 它们全部,让我告诉您:
- 而不是 return,在函数的开头声明一个列表 ids = [],每次找到 john 时,将 id 添加到结果列表中,ids.append(students[id ]).最后在循环之后只是 return ids 列表,或者如果 len(ids) 是 0 只是 return None 用于错误管理。
代码示例:
@app.get("/get-student")
async def get_student_by_name(name : str):
ids = []
for id in students:
if students[id]["name"] == name:
ids.append(students[id])
if len(ids) is 0:
return {"Data": "Student not found"}
else:
return ids