python - 如何从字典中删除最旧的元素?

标签 python dictionary

我想知道删除字典中 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/

相关文章:

python - APSW(或 SQLite3)在 executemany 上插入非常慢

python - 在字典中覆盖 Python 的哈希函数

search - 数据结构树和图有什么区别?

python - Pandas :如何填补缺失的年、周列?

Python Pandas groupby 和分类列的最大值

python - 类型错误 : delete_dog() missing 1 required positional argument: 'Dog_id' How do I get around this?

Python 输入 : Retrieve required keys from TypedDict definition

python - 在字典键中查找字符串,其中字符串不完全是字典中的键

swift - 在这种情况下,我无法理解字典中的快速语言问号运算符 transitions[prev]?[transition]

python - PyGObject - 状态图标上的左键单击菜单