《笨办法学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)相当于我们日常生活中字典的页码,是一种索引或者说地址,每一个键都对应一个值。键和值实际组成了一个散列函数。

下表是字典的常用操作:

Operation

Result

len(a)

the number of items in a 得到字典中元素的个数

a[k]

the item of a with key k 取得键K所对应的值

a[k] = v

set 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 a

True if a has a key k, else False 字典中存在键k则为返回True,没有则返回False

k not in a

Equivalent 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中所有值

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

python3--列表推导式,生成器表达式,内置函数

3,python不但使用迭代器协议,让for循环变得更加通用,大部分内置函数,也是使用迭代器协议访问对象的,例如sum函数是python的内置函数,该函数使用迭...

5110
来自专栏Phoenix的Android之旅

你不知道的HashMap

面试中经常会问到常用数据结构,比如HashMap。 相信你平时几乎每天都会用到HashMap,但是你知道它是的实现原理是怎样的吗? 这里先提几个问题:HashM...

963
来自专栏平凡文摘

7大经典的排序算法总结实现

1422
来自专栏武培轩的专栏

剑指Offer-包含min函数的栈

package Stack; import java.util.Stack; /** * 包含min函数的栈 * 定义栈的数据结构,请在该类型中实现一个...

2766
来自专栏前端进阶之路

JavaScript实现函数重载

重载是指函数或者方法有相同的名称,但是参数个数或类型不相同的情形,这样的同名不同参的函数或者方法之间,互相称之为重载函数或方法。

994
来自专栏python学习之旅

Python笔记(十七):生成器

Python生成器是创建迭代器的简单方法。简单来说,生成器是一个函数,它返回一个我们可以迭代的对象(迭代器)(一次一个值)。

781
来自专栏一枝花算不算浪漫

[C#基础]基础知识一: 面向对象的基本知识.

43417
来自专栏Android干货

Python面向对象高级编程

Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性

882
来自专栏北京马哥教育

Python 运算符,你知道多少?

糖豆贴心提醒,本文阅读时间5分钟,文末有秘密! ? 编辑 | 糖豆 图 | 来源网络 ? 什么是运算符? 本章节主要说明Python的运算符。举个简...

4354
来自专栏肖洒的博客

Python3学习集合

1603

扫码关注云+社区

领取腾讯云代金券