不可散列的类型:'dict_keys'-可正常运行。2.7.5但不在3.4中

fro*_*ard 0 python typeerror

我正在编码像这样的东西: tmp1=tmp[tmp.keys()[0]]

哪里: tmp={'Freud':{3,6,9},'Sigmund':{6}} # a dictionary

这段代码在Python版本中可完美运行。2.7,但如果我在ver中运行相同的版本。3.4我收到TypeError:无法散列的类型:'dict_keys'为什么会出现?我该如何修复它。3.4?

Joh*_*024 5

更换:

tmp1=tmp[tmp.keys()[0]]
Run Code Online (Sandbox Code Playgroud)

带有:

tmp1=tmp[list(tmp.keys())[0]]
Run Code Online (Sandbox Code Playgroud)

讨论区

与python2相反,在python3中,它keys返回一个可迭代的类似于集合的视图对象,而不是列表。例如:

>>> tmp.keys()[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object does not support indexing
Run Code Online (Sandbox Code Playgroud)

但:

>>> list(tmp.keys())[0]
'Freud'
Run Code Online (Sandbox Code Playgroud)