如何通过循环二维列表创建字典?求二维列表转字典方法
如何将元组列表转换为指定结构的字典列表?
当然可以实现你的需求!其实你的思路已经很接近了,不过不需要嵌套循环——因为你的results里每个元素本身就是一个包含两个值的元组,直接遍历每个元组并解包赋值就行。
具体实现方式
方法1:普通for循环(贴合你的伪代码思路)
先看最直观的循环写法,和你预想的逻辑一致,只是去掉了多余的内层循环:
import datetime # 你的示例数据 results = [(15000001, datetime.datetime(2018, 2, 26, 12, 58, 10)), (15000002, datetime.datetime(2018, 2, 26, 12, 58, 11))] # 初始化空列表存放最终结果 student_attendance = [] # 遍历每个元组,直接解包出学号和签到时间 for student_id, attend_time in results: # 构建你需要的字典结构 attendance_dict = { 'StudentID': student_id, 'ClassAttended': attend_time } # 将字典加入结果列表 student_attendance.append(attendance_dict) # 输出验证结果 print(student_attendance)
方法2:列表推导式(更简洁的写法)
如果你喜欢紧凑的代码,可以用Python的列表推导式一行完成需求:
import datetime results = [(15000001, datetime.datetime(2018, 2, 26, 12, 58, 10)), (15000002, datetime.datetime(2018, 2, 26, 12, 58, 11))] # 一行生成目标字典列表 student_attendance = [{'StudentID': sid, 'ClassAttended': time} for sid, time in results]
结果说明
两种方法最终都会生成你需要的结构,输出结果如下:
[{'StudentID': 15000001, 'ClassAttended': datetime.datetime(2018, 2, 26, 12, 58, 10)}, {'StudentID': 15000002, 'ClassAttended': datetime.datetime(2018, 2, 26, 12, 58, 11)}]
这里的核心是元组解包:把每个元组的第一个元素对应到StudentID,第二个对应到ClassAttended,不需要再遍历元组里的单个item,代码更简洁高效。
内容的提问来源于stack exchange,提问作者computer
相关产品推荐
相关产品推荐

