从我正在阅读的免费在线书籍的基本蟒蛇混乱

时间:2014-07-03 02:10:57

标签: python dictionary

我正在阅读http://interactivepython.org/courselib/static/pythonds/Introduction/introduction.html#review-of-basic-python

如果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']。那是为什么?

2 个答案:

答案 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_keysdict_items个对象

由于本书使用的是Python3,你可能应该继续安装它与Python2一起试用他们的例子,否则你会在轨道上遇到更多这样的问题

相关问题