我想删除字典中的第一个条目,使其保持一定的大小并且不会变得太大。我正在循环电压读数,将其存储在字典中,然后通过机器学习模型运行它以进行预测。如何删除字典中最旧的(第一个)条目以保持模型大小相同。
thisdict = {}
while True:
dictionary_power_readings[time.time()] = Power
if len(dictionary_power_readings) > 400 :
dictionary_power_readings.popitem()
#run machine learning model on dictionary_power_readings
答案 0 :(得分:2)
使用 deque
中的 collections
:
import collections
dq = collections.deque(maxlen=400)
while True:
dq.append((time.time(), Power))
示例:
import random
for i in range(500):
dq.append((i, random.randint(0, 50)))
>>> len(dq)
400
>>> dq[0]
(100, 8)
>>> dq[-1]
(499, 30)
答案 1 :(得分:1)
Python 3.6+ 默认维护 dcitionary 插入顺序,因此您可以执行以下操作:
if len(dictionary_power_readings) > 400 :
del dictionary_power_readings[list(dictionary_power_readings.keys())[0]]
答案 2 :(得分:0)
字典有返回所有键的方法 keys(),所以你会得到第一个这样的:
keys = list(dictionary.keys())
dictionary.pop(keys[0])
我正在使用我的手机,所以我无法尝试验证它是否有效,但我希望可以帮助您。