'str'对象没有属性'get' - 学习 Python The Hard Way EX39



我是python的初学者。在练习python的Ex39之后,我尝试用字典写我的家乡城市。

这是我写的:

    states = {
    'Orangon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI',
}
for state, abbrev in states.items():
    print "%s is abbreviated %s" % (state, abbrev)
print states.get('Florida')
print states.get('California')

cities = {
    'New Taipei': 'NTP',
    'Taipei': 'TP',
    'Kaohsiung': 'KHU',
    'Taichung': 'TAC',
    'Taoyuan': 'TYN',
    'Tainan': 'TNA',
    'Hsinchu': 'HSC',
    'Keelung': 'KLG',
    'Chiayi': 'CYI',
    'Changhua': 'CHA',
    'Pingtung': 'PTG',
    'Zhubei': 'ZBI',
    'Yuanlin': 'Yln',
    'Douliu': 'Dlu',
    'Taitung': 'TAT',
    'Hualien': 'HUl',
    'Toufen': 'TFE',
    'Yilan': 'Yln',
    'Miaoli': 'Mli',
    'Magong': 'Mgn',
}
for cities, abbrev in cities.items():
    print "%s is %s" % (cities, abbrev)
print cities.get('Magong')

上一个代码中有错误:

追溯(最近的最新通话(: 文件" ex39.2.py",第27行,在 打印城市。get('magong'(attributeError:'str'对象没有属性'get'

我不明白为什么print states.get('California')中没有错误,但是print cities.get('Magong')

中存在错误

在您的for循环中,您将字符串分配给变量cities

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

因此,在for循环之后, cities不再是dict,而是字符串。

解决方案:在循环中使用其他变量:

for city, abbrev in cities.items():
    print "%s is %s" % (city, abbrev)

最新更新