使用Python编写类词典
对于这个例子,我有一个字典,当我调用它时,会显示“余烬攻击”使用Python编写类词典,python,dictionary,shelve,Python,Dictionary,Shelve,对于这个例子,我有一个字典,当我调用它时,会显示“余烬攻击” #import shelve class Pokemon(): """Each pokemon's attributes""" def __init__(self): self.id=[] self.var1=[] self.var2=[] self.var3=[] self.var4=[] self.var5=[] def __str__(self): showList=
#import shelve
class Pokemon():
"""Each pokemon's attributes"""
def __init__(self):
self.id=[]
self.var1=[]
self.var2=[]
self.var3=[]
self.var4=[]
self.var5=[]
def __str__(self):
showList=['id','var1', 'var2', 'var3', 'var4', 'var5']
#dict1=shelve.open("shelve.dat")
dict1={}
dict1["Charmander"]=Pokemon()
dict1["Charmander"].var1="Ember Attack"
#dict1.sync()
print dict1["Charmander"].var1
#dict1.close()
然而,当我开始使用书架而不是字典时,当我调用var1时,我得到一个空白
import shelve
class Pokemon():
"""Each patient's attributes"""
def __init__(self):
self.id=[]
self.var1=[]
self.var2=[]
self.var3=[]
self.var4=[]
self.var5=[]
def __str__(self):
showList=['id','var1', 'var2', 'var3', 'var4', 'var5']
dict1=shelve.open("shelve.dat")
#dict1={}
dict1["Charmander"]=Pokemon()
dict1["Charmander"].var1="Ember Attack"
dict1.sync()
print dict1["Charmander"].var1
dict1.close()
唯一的区别是我把dict1做成了一本搁置的字典,而不是一本普通的字典。它可能与内存范围或其他有关。不管怎样,有人能帮我修改我的代码,这样它就可以在书架上使用了吗?谢谢
dict1=shelve.open("shelve.dat", writeback=True)
您还可以指定应该提高性能的协议
dict1=shelve.open("shelve.dat", protocol=2, writeback=True)
由于Python语义的缘故,一个工具架
不知道什么时候是可变的
持久性字典条目不可用
被改进的。默认情况下,修改的对象
仅当指定给
搁板(参见示例)。如果可选
写回参数设置为True,
所有访问的条目也被缓存
在内存中,并在sync()上写回
并关闭();这可以使它更方便
在
持久字典,但是,如果很多
访问条目时,它可以使用
大量的内存用于缓存,
它可以进行闭合操作
由于访问了所有条目,因此速度非常慢
都写回来了(没有办法
确定要访问的条目
可变的,也不知道哪些是实际的
变异)
“工作”是什么意思?您能否提供一些提示,说明您希望看到发生什么和没有发生什么?使用sheels方法,我希望能够调用dict1[“Charmander”].var1并返回“余烬攻击”。现在执行此操作时,只返回一个空的
[]
。