我是编码的新手。我正在阅读一本关于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'。
我正在输入完全与书中代码相同的代码,但仍然出现此错误。我无法通过在线搜索找出答案。
那么,为什么会发生这种情况以及如何解决呢?
答案 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)
这也更有意义,因为在每次迭代中,键都是一个单独的状态。