我正在编写类似这样的代码:
tmp1=tmp[tmp.keys()[0]]
其中:tmp={'Freud':{3,6,9},'Sigmund':{6}} # a dictionary
这段代码在Python ver中完美运行。 2.7 但是如果我在ver中运行相同的话。 3.4 我得到了一个TypeError:unhashable类型:' dict_keys' 怎么会? 我怎样才能在ver中修复它。 3.4
答案 0 :(得分:3)
替换:
tmp1=tmp[tmp.keys()[0]]
使用:
tmp1=tmp[list(tmp.keys())[0]]
在python3中,与python2相反,keys
返回一个可迭代的类集视图对象,而不是列表。例如:
>>> tmp.keys()[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object does not support indexing
可是:
>>> list(tmp.keys())[0]
'Freud'
答案 1 :(得分:2)
Python3默认使用视图对象访问dicts,如果更改基础字典,则视图对象会反映更改。
对于您的情况,您可以这样做:
tmp1 = tmp[list(tmp)[0]]
然而,这可能非常昂贵。如果您需要的只是字典中的任何元素,那么您可以这样做:
tmp1 = tmp[next(iter(tmp))]
避免了构建密钥列表的成本。