Python dictionary.keys()错误

tok*_*ama 42 python dictionary python-3.x python-3.2

我正在尝试使用.keys()而不是像往常一样获得密钥列表.但是我明白了.

b = { 'video':0, 'music':23 }
k = b.keys()
print( k[0] )

>>>TypeError: 'dict_keys' object does not support indexing

print( k )
dict_keys(['music', 'video'])
Run Code Online (Sandbox Code Playgroud)

它应该只打印['音乐','视频'],除非我疯了.

这是怎么回事?

Fre*_*Foo 91

Python 3改变了dict.keys这样的行为,它现在返回一个dict_keys对象,它是可迭代但不可索引的(它就像旧的dict.iterkeys,现在已经消失了).您可以通过显式调用来获取Python 2结果list:

>>> b = { 'video':0, 'music':23 }
>>> k = list(b.keys())
>>> k
['music', 'video']
Run Code Online (Sandbox Code Playgroud)

要不就

>>> list(b)
['music', 'video']
Run Code Online (Sandbox Code Playgroud)

  • 只是`list(b)`做同样的事情 (16认同)
  • @tokageKitayama:`对于b.keys()中的x或者只是`对于b中的x'. (3认同)

NPE*_*NPE 8

如果您这样分配k:

k = list(b.keys())
Run Code Online (Sandbox Code Playgroud)

你的代码会起作用.

如错误所示,该dict_keys类型不支持索引.