Python学习07——字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习07——字典相关的知识,希望对你有一定的参考价值。

笨办法学Python第40节,上次用的第三版的书,这次是第四版的书。

这一节的代码如下:

 1 cities = {CA:San Francisco, MI:Detroit, FL:Jacksonville}
 2 
 3 cities[NY] = New York
 4 cities[OR] = Portland
 5 
 6 def find_city(themap, state):
 7     if state in themap:
 8         return themap[state]
 9     else:
10         return "Not found."
11 
12 # ok pay attention!
13 cities[_find] = find_city
14 
15 while True:
16     print "State?(ENTER to quit)",
17     state = raw_input("> ")
18     if not state: break     这一句是说如果没有输入的话就break,所以想要跳出循环,什么都不输入直接回车就行
19 
20     #this line is the most important ever!study!
21     city_found = cities[_find](cities,state)
22     print city_found

运行结果:

技术分享

这一节最重要的是两句话:

cities[‘_find‘] = find_city
city_found = cities[‘_find‘](cities,state)

对这两句话的分析在书的下一节,在这里,我先把我的理解写上。

第一句:首先由代码得知,find_city是个函数,那么就是把这个函数放到字典cities中,并且命名为“_find”。

第二句:将cities这个字典中的state所在的值赋给city_found,为什么是state所在的值,因为cities这个字典里是find_city这个函数,而这个函数的作用里的(themap,state)这两个形参就是对应着21行的两个实参(cities,state),而cities就是前面的字典,这个函数就是返回themap[state],也就是cities中的键state对应的元素。

 

附上书中对第二句的解释:

1. Python 看到 city_found = 于是知道了需要创建一个变量。

2. 然后它读到 cities ,然后知道了它是一个字典

3. 然后看到了 [‘_find‘] , 于是 Python 就从索引找到了字典 cities 中对应的位置,并且获取了该位置的内容。

4. [‘_find‘] 这个位置的内容是我们的函数 find_city ,所以 Python 就知道了这里表示一个函数,于是当它碰到 ( 就开始了函数调用。
5. cities, state 这两个参数将被传递到函数 find_city 中,然后这个函数就被运行了。
6. find_city 接着从 cities 中寻找 states ,并且返回它找到的内容,如果什么都没找到,就返回一个信息说它什么都没找到。
7. Python find_city 接受返回的信息,最后将该信息赋值给一开始的 city_found 这个变量。

以上是关于Python学习07——字典的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

Python代码阅读(第19篇):合并多个字典

Python snippet(代码片段)

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

Python基础学习07