如果adict
是字典,则adict.keys()
将返回dict_keys
对象中字典的键。但是,我只是在Python shell中尝试过这个:
>>> a = {'a': 1, 'b': 2}
>>> a
{'a': 1, 'b': 2}
>>> a.keys()
['a', 'b']
>>> list(a.keys())
['a', 'b']
这本书说如果我输入a.keys()
,它应该返回dict_items['a','b']
而不是['a','b']
。那是为什么?
答案 0 :(得分:1)
您的书是为Python 3.x编写的,但您使用的是Python 2.x.
在Python 3.x 中,dict.keys
返回字典键的dictionary view object(或称为dict_keys
对象的内容) :
>>> # Python 3.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.keys()
dict_keys(['b', 'a'])
>>>
然而,在Python 2.x中,该方法只返回一个键列表。
>>> # Python 2.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.keys()
['b', 'a']
>>>
您需要使用dict.viewkeys
来获取Python 3.x中的字典视图对象:
>>> # Python 2.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.viewkeys()
dict_keys(['a', 'b'])
>>>
答案 1 :(得分:1)
您的图书使用的是Python3
$ python3
Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
[GCC 4.8.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = {'a': 1, 'b': 2}
>>> a.keys()
dict_keys(['a', 'b'])
>>> a.items()
dict_items([('a', 1), ('b', 2)])
在python2中,返回list
而不是这些新的dict_keys
和dict_items
个对象
由于本书使用的是Python3,你可能应该继续安装它与Python2一起试用他们的例子,否则你会在轨道上遇到更多这样的问题