将炼金术结果附加到lis

2021-06-14 22:56:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我用alchemy进行查询,然后将结果附加到一个列表中。 以下是我的代码片段:

students_payment = db.session.query(Payment, Student, Course).join(Student, Course).distinct(Payment.student_id)

student_per_course = []
for data in students_payment:
    student_per_course.append({data.Course.name: [{data.Payment.payment_for_month.value: students_payment.filter(Payment.payment_for_month == data.Payment.payment_for_month).count()}]})

当我打印student_per_course变量时,得到如下结果:

[{'Tahsin': [{'January': 1}]}, {'Arabic Language': [{'September': 1}]}, {'Arabic Language': [{'August': 2}]}, {'Arabic Language': [{'August': 2}]}]

此查询结果中的月份(即八月)存在重复值。你知道吗

然后我尝试用following code删除重复值:

list_of_unique_dicts = []
for dict_ in student_per_course:
    if dict_ not in list_of_unique_dicts:
       list_of_unique_dicts.append(dict_)

这是我打印list_of_unique_dicts的结果:

[{'Tahsin': [{'January': 1}]}, {'Arabic Language': [{'September': 1}]}, {'Arabic Language': [{'August': 2}]}]

月份的重复值已被删除,但字典的某个键仍具有重复值。你知道吗

我想要的结果是:

[
    {
        'Tahsin': [
            {'January': 1}
        ]
    },
    {
        'Arabic Language':
            [
                {'September': 1,
                 'August': 2
                 }
            ]
    },
]

在上面的结果中,Arabic Language键上的结果合并到所有键的值。你知道吗

所以,我的问题是,我的问题出了什么问题。。?,我应该在什么时候修改它。。?,或者我应该考虑直接在Python上合并结果,而不是在SQLALchemy中合并结果吗。。?你知道吗