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.x では、呼び出されdictたときにリストを返すために使用されていました.keys()が、Python 3.x では、キーのビュー オブジェクトを返します。実際のキーが必要な場合は、それらを次のように実体化する必要がありますlist

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