python之weakref

本文介绍了Python中的WeakKeyDictionary和WeakValueDictionary数据结构,它们在key或value不再存在时自动从映射中移除。文章通过实例演示了这两种结构的用法,并指出了一种常见的误解:弱引用不会阻止key的删除。
摘要由CSDN通过智能技术生成

主要类:

  • WeakKeyDictionary

  • WeakValueDictionary

作用:

        WeakKeyDictionary用于存储key-value, 当key消失时,则该条记录消失。       

        WeakValueDictionary用于存储key-value, 当value消失时,则该条记录消失。         

举一个例子:

import weakref

class Test:
    pass

ta = Test()
tb = Test()

# key弱引用,key不存在时,则删除该key
adict = weakref.WeakKeyDictionary()
adict[ta] = 'test_value'
del ta
print(dict(adict))

# value弱引用, value不存在时,则删除该key
bdict = weakref.WeakValueDictionary()
bdict['test_key'] = tb
del tb
print(dict(bdict))

错误例子:

import weakref

class Test:
    pass

ta = Test()
tc = Test()

# 如果删除的是value,则该key仍然存在
adict = weakref.WeakKeyDictionary()
adict[ta] = tc
del tc
print(dict(adict))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值