1

我有一个在 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的搁置有什么变化吗?

4

1 回答 1

0

shelve旨在表现得像一个dict已经改变的...在 Python 2.xdict中用于在被调用时返回一个列表.keys(),在 Python 3.x 中它返回一个键的视图对象。如果您想要实际的密钥,则必须将它们具体化为list

keylist = list(db.keys())
于 2013-07-20T00:04:55.403 回答