从进入和退出时间(成对):
intervals = [
{
'lesson': [1594663200, 1594666800],
'pupil': [1594663340, 1594663389, 1594663390, 1594663395, 1594663396, 1594666472],
'tutor': [1594663290, 1594663430, 1594663443, 1594666473]
}
]
有必要在字典中创建列表: 0.1 : 0.1 ; 0.1:2.3;2.3:0.1;2.3 : 2.3 ...
{
'lesson': [1594663200, 1594666800],
'pupil': [1594663340, 1594663389],
'tutor': [1594663290, 1594663430]
}
{
'lesson': [1594663200, 1594666800],
'pupil': [1594663340, 1594663389],
'tutor': [1594663443, 1594666473]
}
{
'lesson': [1594663200, 1594666800],
'pupil': [1594663390, 1594663395],
'tutor': [1594663290, 1594663430]
}
{
'lesson': [1594663200, 1594666800],
'pupil': [1594663390, 1594663395],
'tutor': [1594663443, 1594666473]
}
...
长而美丽和多才多艺的答案。适用于任意数量的列表,不涉及单个循环,可以作为生成器和模块的说明
itertools。计划是这样的:将所有列表切成对,将笛卡尔积应用于对列表,将其元素转换为字典。
工作数据:
我们将列表分成两对。这是真正的魔法:
我们将字典中的所有值切成标记对:
标记对的笛卡尔积(itertools.product):
我们把笛卡尔积的元素变成字典:
然后一切都非常简单:我们制作两个循环,其中外部循环通过“学生”对,内部循环通过“导师”对: