我有一个列表a = [(1,3),(3,7),(1,10),(3,5),......]
所以在。即(进入时间,退出时间)。
其中每个元组中的第一个元素是员工的上类时间,第二个元素是退出时间。需要找到一天中办公室里人数最多的时间。
例如输出:
{1'00: 10, 2'00: 20, 3'00: 15}
因此最终输出应为 2'00,计数为 20。
最佳答案
使用带有 flatten 和 range
的列表理解,然后使用 collections.Counter
最后提取最大值:
a = [(1, 3), (3, 7), (1, 10), (3, 5)]
from collections import Counter
d = Counter([f'{y}:00' for s, e in a for y in range(s, e + 1)])
print(d)
Counter({'3:00': 4, '4:00': 3, '5:00': 3, '1:00': 2, '2:00': 2,
'6:00': 2, '7:00': 2, '8:00': 1, '9:00': 1, '10:00': 1})
maximum = max(d, key=d.get)
print(maximum, d[maximum])
3:00 4
如果元组的最后一个值不是计数:
d = Counter([f'{y}:00' for s, e in a for y in range(s, e)])
print (d)
Counter({'3:00': 3, '4:00': 3, '1:00': 2, '2:00': 2,
'5:00': 2, '6:00': 2, '7:00': 1, '8:00': 1, '9:00': 1})
maximum = max(d, key=d.get)
print(maximum, d[maximum])
3:00 3
关于python - 我想找到一天中办公室最高峰的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60484008/