keys = list(d.keys())
sss = {}
for a,b in zip(keys, keys[1:]):
... sss[a] = a-b
{datetime.datetime(2020, 5, 25, 0, 0): '519',
datetime.datetime(2020, 5, 26, 0, 0): '223',
datetime.datetime(2020, 5, 27, 0, 0): '203',
datetime.datetime(2020, 5, 29, 0, 0): '265',
datetime.datetime(2020, 5, 30, 0, 0): '262',
datetime.datetime(2020, 5, 31, 0, 0): '510',
datetime.datetime(2020, 6, 2, 0, 0): '329',
datetime.datetime(2020, 6, 3, 0, 0): '486',
datetime.datetime(2020, 6, 4, 0, 0): '766',
datetime.datetime(2020, 6, 7, 0, 0): '343',
datetime.datetime(2020, 6, 8, 0, 0): '372'}
вы можете собрать линк словарь где найти разницу между каждой парой данных
{datetime.datetime(2020, 5, 25, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 26, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 27, 0, 0): datetime.timedelta(days=-2),
datetime.datetime(2020, 5, 29, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 30, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 31, 0, 0): datetime.timedelta(days=-2),
datetime.datetime(2020, 6, 2, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 6, 3, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 6, 4, 0, 0): datetime.timedelta(days=-3),
datetime.datetime(2020, 6, 7, 0, 0): datetime.timedelta(days=-1)}
ну и по этой дельте, вы можете понимать если первая дельта равная -1 то это смена, если вторая то подработка.
а дальше уже чет придумывать и разделить на однородные данные