gpt4 book ai didi

python - 如何获取具有嵌入的键值对数组的 PyMongo 文档的值(实时)

转载 作者:行者123 更新时间:2023-12-01 07:43:18 25 4
gpt4 key购买 nike

student_info=Studentdb.db.Student.find_one({'username': current_user.username})

完整的文档将按上述方式返回

尝试通过以下方式获得每个测试的分数:

subject_info = student_info['subjects.subject_name)']

获取 key 错误

KeyError: subjects.subject_name

预期用途是:

需要动态获取 Unit_Test1、Unit_Test2、Unit_Test3、MidTerm、Annual 的键值(数字),并将所有科目的值相加

如果没有像主题这样的列表,可以使用 subject_info['user_name'] 和 subject_info['status'] 轻松获取

find() 函数需要一个值,但希望从 mongodb Pymongo 文档动态获取该值。任何线索都会有所帮助,因为这相对较新。

尝试使用以下方法总结每个测试的分数:

subject_info = student_info['subjects.subject_name)']

获取 key 错误

KeyError: subjects.subject_name

{
"_id" : Grade01
"user_name" : "TestUser",
"status" : "active",
"subjects" : [
{
"subject_name" : "Computer",
"Unit_Test1 " : 95,
"Unit_Test2" : 96,
"Unit_Test3" : 94,
"MidTerml" : 99,
"Annual" : 96
},
{

"subject_name" : "Science",
"Unit_Test1 " : 92,
"Unit_Test2" : 92,
"Unit_Test3" : 93,
"MidTerm" : 95,
"Annual" : 97
},
{

"subject_name" : "Maths",
"Unit_Test1 " : 96,
"Unit_Test2" : 94,
"Unit_Test3" : 93,
"MidTerm" : 95,
"Annual" : 99
},

}

student_info=Studentdb.db.Student.find_one({'username': current_user.username})

预期结果如下:

对于特定用户(匹配用户名),匹配科目,例如科目.科目名称,一旦学生和科目名称匹配,就可以使用相应的分数,并计算每个单独测试 Unit_Test1、Unit_Test2 的总分,所有科目的 Unit_Test3、期中考试、年度考试

最佳答案

好的。您的请求返回一本字典,这非常好:

>>> student_info = {'_id': 'Grade01', 'user_name': 'TestUser', 'status': 'active', 'subjects': [{'subject_name': 'Computer', 'Unit_Test1 ': 95, 'Unit_Test2': 96, 'Unit_Test3': 94, 'MidTerml': 99, 'Annual': 96}, {'subject_name': 'Science', 'Unit_Test1 ': 92, 'Unit_Test2': 92, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 97}, {'subject_name': 'Maths', 'Unit_Test1 ': 96, 'Unit_Test2': 94, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 99}]}
>>> student_info['subjects']
[{'subject_name': 'Computer', 'Unit_Test1 ': 95, 'Unit_Test2': 96, 'Unit_Test3': 94, 'MidTerml': 99, 'Annual': 96}, {'subject_name': 'Science', 'Unit_Test1 ': 92, 'Unit_Test2': 92, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 97}, {'subject_name': 'Maths', 'Unit_Test1 ': 96, 'Unit_Test2': 94, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 99}]
>>> student_info['subjects'][0]
{'subject_name': 'Computer', 'Unit_Test1 ': 95, 'Unit_Test2': 96, 'Unit_Test3': 94, 'MidTerml': 99, 'Annual': 96}
>>> student_info['subjects'][0]['subject_name']
'Computer'

这个命令行小练习展示了如何获取字典中的每条信息。

现在是动态管理所有这些的代码

student_info = {'_id': 'Grade01', 'user_name': 'TestUser', 'status': 'active', 'subjects': [{'subject_name': 'Computer', 'Unit_Test1 ': 95, 'Unit_Test2': 96, 'Unit_Test3': 94, 'MidTerml': 99, 'Annual': 96}, {'subject_name': 'Science', 'Unit_Test1 ': 92, 'Unit_Test2': 92, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 97}, {'subject_name': 'Maths', 'Unit_Test1 ': 96, 'Unit_Test2': 94, 'Unit_Test3': 93, 'MidTerm': 95, 'Annual': 99}]}
subjects = student_info['subjects']
result = {}
for i in subjects:
total = 0
one_subject = ''
for key, value in i.items():
if key == 'subject_name':
one_subject = value
else:
total += int(value)
result[one_subject] = total
print(result)

此代码生成一个字典,其中不同主题作为键,每个单独测试的总和作为值。结果给出:

{'Computer': 480, 'Science': 469, 'Maths': 477}

关于python - 如何获取具有嵌入的键值对数组的 PyMongo 文档的值(实时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com