如何从查询集中有效地制作字典。
我有几天,每一天都有与之相关的时间
第 1 天 - 时间 1
第 1 天 - 时间 2
第 1 天 - 第 3 时间
第 2 天 - 时间 1
我想做一个list
的dictionary
就像 [{"day":'Day1', "time":'Time1, Time2, Time3'}, ...]
这个join
listof = ",".join(str([ab.day.day, str(ab.time)]) for ab in vqs.clinicDoctor_dayShift.all().order_by('day__id'))
给我类似的字符串
['Sunday', '15:01:00'],['Sunday', '16:02:00'],['Monday', '09:01:00'],['Monday', '15:01:00'],['Monday', '16:02:00'],['Tuesday', '09:01:00'],['Tuesday', '16:02:00']
我想要一个list
像这样
[{'day':'Sunday', 'time':'15:01:00, 16:02:00, 09:01:00'},{'day':'Monday', 'time':'15:01:00, 16:02:00'},{'day':'Tuesday', 'time':'09:01:00, 16:02:00'}]
任何人都可以帮我解决这个问题吗?
谢谢。
最佳答案
您可以使用values()
:
vqs.clinicDoctor_dayShift.values('day__day', 'time').order_by('day__id')
要进行分组,请尝试 groupby
:
from itertools import groupby
raw_result = vqs.clinicDoctor_dayShift.values('day__day', 'time').order_by('day__id')
sorted_result = sorted(result, key=lambda x: x.get('day__day'))
result = []
for k, g in groupby(sorted_result, key=lambda x: x.get('day__day')):
result.append({'day':k, 'time': ','.join(str(item['time']) for item in g)})
关于python - Django:根据查询集中的日期名称创建逗号分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705867/