初级python混乱从免费的在线书籍我正在阅读

2024-09-24 00:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在读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']。为什么


Tags: oforghttp字典htmlstatickeysreview
2条回答

您的书是为Python3.x编写的,但您使用的是Python2.x

在python3.xonly中,^{}返回字典键的dictionary view object(或您所称的dict_keys对象):

>>> # Python 3.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.keys()
dict_keys(['b', 'a'])
>>>

然而,在Python2.x中,该方法只返回一个键列表

>>> # Python 2.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.keys()
['b', 'a']
>>>

您需要使用^{}来获得类似于python3.x的dictionary视图对象:

>>> # Python 2.x interpreter
>>> a = {'a': 1, 'b': 2}
>>> a.viewkeys()
dict_keys(['a', 'b'])
>>>

你的书用的是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旁边,以试用它们的示例,否则您会遇到更多类似这样的问题

相关问题 更多 >