我有一个这样的字典列表:
data = [
{"Zeit": datetime(2024, 2, 27, 8, 0), "km": 10},
{"Zeit": datetime(2024, 2, 27, 13, 30), "km": 20},
{"Zeit": datetime(2024, 2, 27, 17, 30), "km": 40},
{"Zeit": datetime(2024, 2, 28, 9, 15), "km": 15},
{"Zeit": datetime(2024, 2, 28, 14, 45), "km": 25}
]
现在我想找到每天的第一个时间并指定 km = 0。这应该导致:
data = [
{"Zeit": datetime(2024, 2, 27, 8, 0), "km": 0},
{"Zeit": datetime(2024, 2, 27, 13, 30), "km": 20},
{"Zeit": datetime(2024, 2, 27, 17, 30), "km": 40},
{"Zeit": datetime(2024, 2, 28, 9, 15), "km": 0},
{"Zeit": datetime(2024, 2, 28, 14, 45), "km": 25}
]
我该怎么做?
到目前为止,我什至没有找到解决这个问题的良好起点。
尝试:
from datetime import datetime
from itertools import groupby
data = [
{"Zeit": datetime(2024, 2, 27, 8, 0), "km": 10},
{"Zeit": datetime(2024, 2, 27, 13, 30), "km": 20},
{"Zeit": datetime(2024, 2, 27, 17, 30), "km": 40},
{"Zeit": datetime(2024, 2, 28, 9, 15), "km": 15},
{"Zeit": datetime(2024, 2, 28, 14, 45), "km": 25},
]
# sort if needed:
# data.sort(key=lambda d: d["Zeit"])
for _, g in groupby(data, lambda d: d["Zeit"].day):
first = next(g)
first["km"] = 0
print(data)
打印:
[
{"Zeit": datetime.datetime(2024, 2, 27, 8, 0), "km": 0},
{"Zeit": datetime.datetime(2024, 2, 27, 13, 30), "km": 20},
{"Zeit": datetime.datetime(2024, 2, 27, 17, 30), "km": 40},
{"Zeit": datetime.datetime(2024, 2, 28, 9, 15), "km": 0},
{"Zeit": datetime.datetime(2024, 2, 28, 14, 45), "km": 25},
]
将 DateTime 转换为 Unix 时间戳,然后按升序排序。列表中的第一个就是您要查找的。
从下面的代码开始:
import time
date_time = datetime.datetime(2021, 7, 26, 21, 20)
unix_timestamp = time.mktime(date_time.timetuple())```