2

代码来自Learn Python The Hard Way Exercise 39。请在第一组代码下方查看我的问题。

# create a mapping of state to abbreviation
states = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# create a basic set of states and some cities in them
cities = {
    'CA': 'San Francisco',
    'MI': 'Detroit',
    'FL': 'Jacksonville'
}

# do it by using the state then cities dict
print '-' * 10
print "Michigan has: ", cities[states['Michigan']]
print "Florida has: ", cities[states['Florida']]

当您可以像下面这样简单地进行打印时,为什么要以上述方式打印出来?

print '-' * 10
print "Michigan has: ", cities['MI']
print "Florida has: ", cities['FL']

我想知道我是否在这里遗漏了一些重要的东西。仅仅是为了学习目的吗?如果是这样,我究竟在那里学习什么?请澄清。

4

3 回答 3

4

第一个更通用:

>>> for state in ('Michigan', 'Florida'):
...    print '%s has: %s' % (state, cities[states[state]])
... 

第二种方法不会以这种方式概括,因为突然之间您需要先验地知道状态代码。

于 2013-11-13T11:58:20.280 回答
1

只要您知道该州的名称及其缩写,您确实可以这样做。但是书中介绍的方式可以很容易地以有用的方式进行调整,例如

for state, abbreviation in states.items():
    if abbreviation in cities:
        print state, "has: ", cities[abbreviation]

获取州-城市对的列表。

于 2013-11-13T12:00:31.450 回答
0

看看漂亮的打印标准库:

http://docs.python.org/2/library/pprint.html

于 2013-11-13T12:02:34.910 回答