我想知道删除字典中 oldest 元素以控制最大字典大小的最佳方法。
示例:
MAXSIZE = 4
dict = {}
def add(key,value):
if len(dict) == MAXSIZE:
old = get_oldest_key() # returns the key to the oldest item
del dict[old]
dict[key] = value
add('a','1') # {'a': '1'}
add('b','2') # {'a': '1', 'b': '2'}
add('c','3') # {'a': '1', 'c': '3', 'b': '2'}
add('d','4') # {'a': '1', 'c': '3', 'b': '2', 'd': '4'}
add('e','5') # {'c': '3', 'b': '2', 'e': '5', 'd': '4'}
清楚了吗?
编辑:忘记 len(dict)
落后一项。
最佳答案
Python 3.1 有一个有序的字典。使用 collections.OrderedDict
类来保持元素的插入顺序。请注意,如果您正在覆盖一个元素,它会保留其在顺序中的位置,您需要删除并重新插入一个元素以使其保持在最后。
如果您使用的是旧版本,可以使用补丁来获取 OrderedDict。
无论如何,如果它不可用,您可以简单地使用一个元组列表:它可以很容易地与字典进行转换,保持其顺序,可以像使用 append
的队列一样使用和 pop
, ...
关于python - 如何从字典中删除最旧的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1756992/