我有一个字典列表如下
[{'grade': '1', 'past_student_sum': 1611},
{'grade': '2', 'past_student_sum': 1631},
{'grade': '3', 'past_student_sum': 1598},
{'grade': '1', 'current_student_sum': 1611},
{'grade': '2', 'current_student_sum': 1631},
{'grade': '3', 'current_student_sum': 1598}]
我通过以下方式组合 2 个查询集得到了这个列表:
grade_list = list(past_enrollments) + list(current_enrollments)
是否有更好的替代方法来将这些组合起来以获得如下所示的列表:
[{'grade': '1', 'past_student_sum': 1611, 'current_student_sum': 1621},
{'grade': '2', 'past_student_sum': 1511, 'current_student_sum': 1521}]
请您参考如下方法:
我不是从 past_enrollments 和 current_enrollments 构建字典列表,而是使用 grade 值作为键来构建另一个字典。最简单的方法可能是使用 defaultdict
from collections import defaultdict
from itertools import chain
grades = defaultdict(dict)
for d in chain(past_enrollments, current_enrollments):
grades[d['grade']].update(d)
然后我们完成的字典就是那个字典的值
grades = list(grades.values())
print(grades)
# [{'grade': '1', 'past_student_sum': 1611, 'current_student_sum': 1611},
# {'grade': '2', 'past_student_sum': 1631, 'current_student_sum': 1631},
# {'grade': '3', 'past_student_sum': 1598, 'current_student_sum': 1598}]
