我有一个字典,索引作为键,时间戳作为值。我想获得其值有重叠的键。
例如:
{1: 19-13-30
19-13-32
19-13-33
.
.
19-13-55,
2: 19-13-25
19-13-26
19-13-27
.
.
19-13-35,
3:19-13-10
19-13-31
.
.
19-13-18}
对于上述字典值1和2重叠(19-13-30至19-13-35)。所以,我想在有重叠时返回密钥。在这种情况下1& 2
为了计算重叠,我在迭代值并将开始时间和结束时间存储在[starttime,endtime]等列表中。然后我通过
检查重叠 overlapping = [ [x,y] for x in intervals for y in intervals if x is not y and x[1]>y[0] and x[0]<y[0] ]
for x in overlapping:
print '{0} overlaps with {1}'.format(x[0],x[1])
这会打印重叠的值。但我想要的是值重叠的键。
答案 0 :(得分:0)
为了与您的代码保持一致,这应该是一个最小的修改:
H1
答案 1 :(得分:0)
您可以迭代值(即区间列表中的位置),而不是迭代间隔。像
这样的东西keys = range(len(intervals))
overlapping = [ [x,y] for x in keys for y in keys if x is not y and intervals[x][1]>intervals[y][0] and intervals[x][0]<intervals[y][0] ]