《笨办法学Python》 第40课手记

《笨办法学Python》 第40课手记

本节课讲述的字典,一种比数组更强大的数据结构,字典(dict)的另一个名称是散列(hash)。

我将在后面具体解释dict,首先通过作者的代码来了解一下dict。

原代码如下:

cities = {'CA': 'San Francisco', 'MI': 'Detroit', 
                    'FL': 'Jacksonville'}

cities['NY'] = 'New York' 
cities['OR'] = 'Portland'

def find_city(themap, state):
    if state in themap:
        return themap[state]
    else:
        return "Not found."

# ok pay attention!
cities['_find'] = find_city

while True:
    print "State? (ENTER to quit)",
    state = raw_input("> ")

    if not state: break

    # this line is the most important ever! Study!
    city_found = cities['_find'](cities, state)
    print city_found

while true创建了一个永远执行的while循环,这是惯常的做法。

cities[‘_find’] = find_city这里的cities[‘_find’](是创建的字典中的一个元素)被赋值成find__city函数,也可以理解为cities[‘_find’]是一个函数变量。

结果如下:
这里写图片描述

本节课涉及的知识

Python中的字典:

Python种的字典(key)和(value)组成。键(key)相当于我们日常生活中字典的页码,是一种索引或者说地址,每一个键都对应一个值。键和值实际组成了一个散列函数。

下表是字典的常用操作:

OperationResult
len(a)the number of items in a 得到字典中元素的个数
a[k]the item of a with key k 取得键K所对应的值
a[k] = vset a[k] to v 设定键k所对应的值成为v
del a[k]remove a[k] from a 从字典中删除键为k的元素
a.clear()remove all items from a 清空整个字典
a.copy()a (shallow) copy of a 得到字典副本
k in aTrue if a has a key k, else False 字典中存在键k则为返回True,没有则返回False
k not in aEquivalent to not k in a 字典中不存在键k则为返回true,反之返回False
a.has_key(k)Equivalent to k in a, use that form in new code 等价于k in a
a.items()a copy of a’s list of (key, value) pairs 得到一个键值的list
a.keys()a copy of a’s list of keys 得到键的list
a.update([b])updates (and overwrites) key/value pairs from b 从b字典中更新a字典,如果键相同则更新,a中不存在则追加
a.fromkeys(seq[, value])Creates a new dictionary with keys from seq and values set to value 创建一个新的字典,键来自seq,值对应键对应的值
a.values()a copy of a’s list of values 得到字典值的副本
a.get(k[, x])a[k] if k in a, else x 得到a[k],若存在返回x
a.setdefault(k[, x])a[k] if k in a, else x (also setting it) 得到a[k],若不存在返回x,并设定为x
a.pop(k[, x])a[k] if k in a, else x (and remove k) 弹出a[k],若不存在则返回x,同时将删除k键
a.popitem()remove and return an arbitrary (key, value) pair 弹出a中对象的键和值,并删除弹出的键和值
a.iteritems()return an iterator over (key, value) pairs 返回a中所有对象(键和值)
a.iterkeys()return an iterator over the mapping’s keys 返回a中所有键(索引)
a.itervalues()return an iterator over the mapping’s values 返回a中所有值
posted @ 2016-02-18 15:38  从流域到海域  阅读(52)  评论(0编辑  收藏  举报