尽管输入与本书相同的代码,为什么仍会收到此错误?

时间:2020-03-22 18:25:58

标签: python-2.7

我是编码的新手。我正在阅读一本关于python的非常基础的入门书,并且到目前为止还没有任何问题。

本书中的练习代码是使我们的第一个词典像

states = {
   'Alabama':  'AL',
   'Alaska':  'AK',
   'Arizona':  'AZ',
   'Arkansas':  'AR',
   'California':  'CA',
   'Colorado':  'CO',
   'Connecticut':  'CT',
 }

然后用大写字母制作另一个类似的字典。

然后,我们打印状态,然后打印大写字母,然后打印状态+大写字母。

问题是我打印了状态,

for states, abbrev in states.items():
     print "%s is abbreviated %s" % (states, abbrev)

这给了我想要的东西,但是如果我尝试以任何方式再次打印状态

for states, abbrev in states.items():
     print "%s is abbreviated %s" % (states, abbrev)

我在Powershell中收到以下错误, AttributeError:'str'对象没有属性'items'

我正在输入完全与书中代码相同的代码,但仍然出现此错误。我无法通过在线搜索找出答案。

那么,为什么会发生这种情况以及如何解决呢?

1 个答案:

答案 0 :(得分:1)

for states, abbrev in states.items():
     print "%s is abbreviated %s" % (states, abbrev)

您为字典和键(states)使用相同的名称(for states ... states.items())。

此循环运行后,states仍绑定到该循环访问的最后一个键,实际上,您将失去对states字典的访问权限。

为字典和迭代变量使用其他名称,例如:

for state, abbrev in states.items():
     print "%s is abbreviated %s" % (state, abbrev)

这也更有意义,因为在每次迭代中,键都是一个单独的状态。