python - Django:根据查询集中的日期名称创建逗号分隔列表

标签 python django

如何从查询集中有效地制作字典。

我有几天,每一天都有与之相关的时间

第 1 天 - 时间 1
第 1 天 - 时间 2
第 1 天 - 第 3 时间

第 2 天 - 时间 1

我想做一个listdictionary就像 [{"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/

相关文章:

python - 列表:查找第一个索引并计算列表列表中特定列表的出现次数

python - 需要帮助从 csv excel 文件创建字典

Python - 来自 2 个文件的行与\n

python - 如何将自定义 css 添加到 django 表单 : form. as_p?

django - 捕获 protected 错误并向用户显示其消息而不是裸露的 500 代码

python - 用户尝试上传照片时出现 FileNotFoundError

python - Pandas - 用低于/更少的观察值百分比替换值

python - 如何从 sklearn 中的 ColumnTransformer/Pipeline 中排除特定列?

python - Django 获取相关对象的多对多关系

django - 迁移最终进入虚拟环境?