我有一個(嵌套的)dict。鍵是資料時間物件。我試圖只保留最新的專案,在這種情況下,所有超過 60 秒的專案都應該被洗掉。
由于該應用的時間非常關鍵,我正在尋找一個更快的解決方案。我懷疑我的解決方案是否好/快,或者認為有更快的解決方案。
誰能給我一個想法,讓我如何解決這個問題,以節省一些步驟和時間。
代碼:
import datetime
import copy
test = {'record1': {datetime. datetime(2021, 9, 14, 1, 3, 3, 781905)。) 'A', datetime. datetime(2021, 9, 14, 1, 4, 3, 876008)。) 'B', datetime. datetime(2021, 9, 14, 1, 36, 6, 557661)。) 'C' }}}。
dict2 = copy.deepcopy(test)
keys = dict2["record1"].keys()
比較 = datetime.datetime.now() - datetime.timedelta(seconds=60)
for key in keys:
if key >= compare:
print(key)
else:
del test['record1'][key] 。
print(test)
輸出:
2021-09-14 01:36:06.557661
{'record1': {datetime. datetime(2021, 9, 14, 1, 36, 6, 557661)。) 'C'}}。
uj5u.com熱心網友回復:
你不必對字典進行deepcopy - 你可以使用字典理解與過濾。例如:
import datetime
測驗 = {
"record1"/span>: {
datetime. datetime(2021, 9, 14, 0, 3, 3, 781905)。) "A"。
日期時間。 datetime(2021, 9, 14, 0, 4, 3, 876008)。) "B"。
日期時間。 datetime(2021, 9, 14, 0, 7, 6, 557661)。) "C"。
}
}
compare = datetime.datetime.now() - datetime.timedelta(seconds=60)
測驗 = {
k: {kk: vv for kk, vv in v.items() if kk > compare}。for k, v in test.items()
}
print(test)
列印:
{'record1': {datetime.datetime(2021, 9, 14, 0, 7, 6, 557661): 'C'}}.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/311642.html
標籤:
上一篇:將DF轉換為dict
