0
我已經列出了包含學生標記和主題的目錄和列表。我想排序基於總學生記錄並更換未發現學生用0.1按Python中字典列表的聚合值排序
student_data=[{u'sub_1': 51, u'sub_2': 72, u'sub_4': 62, 'user': u'student_1'}, {u'subj_1': 45, u'subj_2': 56, u'subj_6': 71, 'user': u'student_2'}, {u'sub_1': 81, u'sub_3': 67, u'sub_5': 72, 'user': u'student_3'}]
subjects=['sub_1','sub_2','sub_3','sub_4','sub_5','sub_6']
預期輸出的主題:
Student sub_1 sub_2 sub_3 sub_4 sub_5 sub_6
student_3 81 0 67 0 72 0
student_1 51 72 0 62 0 0
student_2 45 56 0 0 0 71
,我已經邏輯用於下面的代碼並不是很好。我最終的輸出結果就像根據總數排序學生記錄。
示例代碼:
>>> for student in student_data:
... sys.stdout.write('\n' + '{:20s}'.format(student['user']))
... del student['user']
... for k, v in student.items():
... for i in subjects:
... if i == k:
... sys.stdout.write('{:5s}'.format(str(v)))
... else:
... sys.stdout.write('{:5s}'.format(str("0")))
...
student_1 0 72 0 0 0 0 51 0 0 0 0 0 0 0 0 62 0 0
student_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
student_3 0 72 0 0 0 0 0 0 67 0 0 0 81 0 0 0 0 0 >>>
爲什麼'subjects'沒有取得unicode字符串的?爲什麼'student_2'具有'subj_N'而不是'sub_N'?爲什麼你使用'sys.stdout.write'而不是''帶尾隨''的'print'來防止換行,或者用'print(...,end ='')''從__future__ import print_function'? –