来自python 3.3中shelve.keys()的异常行为

时间:2013-07-20 00:00:15

标签: python python-3.x shelve

我有一个简短的搁置练习程序,它在python 2.7中按预期运行。我把它移到了3.3,因此:

import shelve

db = shelve.open('lib')
db['a'] = "string1"
db['b'] = "string2"
keylist = db.keys()
print( keylist )
db.close()

现在我得到了这个结果(不完全是错误,但不是所希望的行为:

KeysView(<shelve.DbfilenameShelf object at 0x7f0f06b3be90>)

关于出了什么问题以及如何解决问题的任何想法?在搁置3.3中有什么变化吗?

1 个答案:

答案 0 :(得分:0)

shelve的行为类似于dict已更改...在Python 2.x中dict用于在{{1}时返回列表在Python 3.x中调用它会返回键的视图对象。如果您想要实际的密钥,则必须将它们具体化为.keys()

list