读书笔记--《Python基础教程第二版》-- 第四章 字典:当索引不好用时

字典里的键可以是数字、字符串、元组

4.1 字典的使用

>>> name=[‘Alice‘,‘Beth‘,‘Earl‘]

>>> numbers=[‘2341‘,‘9102‘,‘0142‘] #电话号码必须使用字符串,二不能是整数,因为电话号码可能以0开头

>>> numbers[name.index(‘Beth‘)]

‘9102‘

4.2 创建和使用字典

>>> data ={‘title‘:‘My Home Page‘,‘text‘:‘Welcome to my home page!‘}

4.2.1 dict 函数

通过其他映射,或者键值序列建立字典

>>> items=[(‘name‘,‘Gumby‘),(‘age‘,42)]

>>> d=dict(items)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

>>> d[‘name‘]

‘Gumby‘

直接用dict来创建字典,用键值对、或者映射和关键字参数来创建字典

>>> d = dict(name=‘Gumby‘,age=42)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

dict函数和tuple、str函数类似

>>> c=dict()

>>> c

{}

4.2.2 基本字典操作

len(d) 返回d中键值对的数量

d[k]

d[k]=v

del d[k]

k in d 检查d中是否含有k的项

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

>>> len(d)

2

>>> d[‘age‘]

42

>>> d[‘age‘]=35

>>> d

{‘age‘: 35, ‘name‘: ‘Gumby‘}

>>> ‘age‘ in d

True

>>> ‘age1‘ in d

False

>>> del d[‘age‘]

>>> d

{‘name‘: ‘Gumby‘}

字典和列表的比较

1、键类型 最常用的是字符串和元组

2、自动添加  列表赋值必须初始化列表

3、成员资格,字典查找的是键,列表查找的是值

4.2.3 字典的格式化字符串

>>> phonebook={‘Beth‘:‘9102‘,‘Alice‘:‘2341‘,‘Cecil‘:‘3258‘}

>>> "Cecil‘s phone number is %(Cecil)s." % phonebook

"Cecil‘s phone number is 3258."

>>> data ={‘title‘:‘My Home Page‘,‘text‘:‘Welcome to my home page!‘}

>>> template=‘‘‘<html>

... <head><title>%(title)s</title></head>

... <body>

... <h1>%(title)s</h1>

... <p>%(text)s</p>

... </body>‘‘‘

>>> print template % data

<html>

<head><title>My Home Page</title></head>

<body>

<h1>My Home Page</h1>

<p>Welcome to my home page!</p>

</body>

4.2.4 字典方法

1、clear 返回None

>>> d[‘name‘]=‘Gumby‘

>>> d.clear()

>>> d

{}

应用一:

>>> x = {}

>>> y  = x

>>> x[‘key‘]=‘value‘

>>> y

{‘key‘: ‘value‘}

>>> x

{‘key‘: ‘value‘}

>>> x={}

>>> y

{‘key‘: ‘value‘}

>>>

应用二

>>> x = {}

>>> y  = x

>>> x[‘key‘]=‘value‘

>>> x

{‘key‘: ‘value‘}

>>> y

{‘key‘: ‘value‘}

>>> x.clear()

>>> x

{}

>>> y

{}

2、copy 浅复制,修改引用类型的key,对原来的字典有影响

>>> x={‘username‘:‘admin‘,‘machines‘:[‘foo‘,‘bar‘,‘baz‘]}

>>> y=x.copy()

>>> y[‘username‘]

‘admin‘

>>> x[‘username‘]

‘admin‘

>>> y[‘username‘]=‘mlh‘

>>> y[‘machines‘].remove(‘bar‘)

>>> y

{‘username‘: ‘mlh‘, ‘machines‘: [‘foo‘, ‘baz‘]}

>>> x

{‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘baz‘]}

deepcopy 深度拷贝

>>> from copy import deepcopy

>>> d={}

>>> d[‘names‘]=[‘Alfred‘,‘Bertrand‘]

>>> c=d.copy()

>>> dc=deepcopy(d)

>>> d[‘names‘].append(‘Clive‘)

>>> c

{‘names‘: [‘Alfred‘, ‘Bertrand‘, ‘Clive‘]}

>>> d

{‘names‘: [‘Alfred‘, ‘Bertrand‘, ‘Clive‘]}

>>> dc

{‘names‘: [‘Alfred‘, ‘Bertrand‘]}

3、fromkeys  用给定key创建新的字典

>>> {}.fromkeys([‘name‘,‘age‘])

{‘age‘: None, ‘name‘: None}

>>> dict.fromkeys([‘name‘,‘age‘])

{‘age‘: None, ‘name‘: None}

>>> dict.fromkeys([‘name‘,‘age‘],‘(unkown)‘)

{‘age‘: ‘(unkown)‘, ‘name‘: ‘(unkown)‘}

4、get,访问不到不会报错

>>> d={}

>>> print d[‘name‘]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: ‘name‘

>>> print d.get(‘name‘)

None

>>> print d.get(‘name‘,‘N/A‘)

N/A

>>> d[‘name‘]=‘Eric‘

>>> print d.get(‘name‘,‘N/A‘)

Eric

5、has_key 等价于 k in d

>>> d={}

>>> d.has_key(‘name‘)

False

>>> d[‘name‘]=‘Eric‘

>>> d.has_key(‘name‘)

True

6、items和iteritems 将字典以列表形式返回

>>> d={‘title‘:‘Python web site‘,‘url‘:‘http://www.python.org‘,‘spam‘:‘0‘}

>>> d.items()

[(‘url‘, ‘http://www.python.org‘), (‘spam‘, ‘0‘), (‘title‘, ‘Python web site‘)]

>>> d

{‘url‘: ‘http://www.python.org‘, ‘spam‘: ‘0‘, ‘title‘: ‘Python web site‘}

>>> it=d.iteritems()

>>> it

<dictionary-itemiterator object at 0x7fe272022af8>

>>> list(it) #将迭代器转换为list

[(‘url‘, ‘http://www.python.org‘), (‘spam‘, ‘0‘), (‘title‘, ‘Python web site‘)]

7、keys和iterkeys

>>> d

{‘url‘: ‘http://www.python.org‘, ‘spam‘: ‘0‘, ‘title‘: ‘Python web site‘}

>>> d.keys()

[‘url‘, ‘spam‘, ‘title‘]

>>> ks=d.iterkeys()

>>> ks

<dictionary-keyiterator object at 0x7fe272022c00>

>>> list(ks)

[‘url‘, ‘spam‘, ‘title‘]

8、pop 获取对应key的值,并从原字典中删除

>>> d={‘x‘:1,‘y‘:2}

>>> d.pop(‘x‘)

1

>>> d

{‘y‘: 2}

9、popitem 随机弹出一组key和value

>>> d={‘title‘:‘Python web site‘,‘url‘:‘http://www.python.org‘,‘spam‘:‘0‘}

>>> d.popitem()

(‘url‘, ‘http://www.python.org‘)

>>> d

{‘spam‘: ‘0‘, ‘title‘: ‘Python web site‘}

>>> d.popitem()

(‘spam‘, ‘0‘)

>>> d

{‘title‘: ‘Python web site‘}

>>> d.popitem()

(‘title‘, ‘Python web site‘)

>>> d

{}

10、setdefault

>>> d={}

>>> d.setdefault(‘name‘,‘N/A‘) #不指定默认值,默认使用None

‘N/A‘

>>> d

{‘name‘: ‘N/A‘}

>>> d[‘name‘]=‘Gumby‘

>>> d.setdefault(‘name‘,‘N/A‘)

‘Gumby‘

>>> d

{‘name‘: ‘Gumby‘}

11、update 用一个字典更新另外一个字典,相同的key会覆盖

>>> d={‘title‘:‘python Web site‘,‘url‘:‘http://www.python.org‘}

>>> x={‘title‘:‘Python Language Website‘}

>>> d.update(x)

>>> d

{‘url‘: ‘http://www.python.org‘, ‘title‘: ‘Python Language Website‘}

12 values和itervalues

>>> d={}

>>> d[1]=1

>>> d[2]=3

>>> d[3]=2

>>> d[4]=1

>>> d.values()

[1, 3, 2, 1]

>>> it=d.itervalues()

>>> it

<dictionary-valueiterator object at 0x7fe272022c58>

>>> list(it)

[1, 3, 2, 1]

时间: 2024-10-12 14:26:09

读书笔记--《Python基础教程第二版》-- 第四章 字典:当索引不好用时的相关文章

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

python基础教程第二版读书笔记

第一张 基础知识 模块 import 模块:用函数的时候格式 模块.函数 from 模块 import 函数:用函数的时候格式  函数 字符串 ‘x‘反引号(不是单引号‘’,也可用repr函数),可以将数值x变为字符串,例如x=1,print ”hello“+x(错误),print ”hello“+‘x‘(对的) r-原始字符串,即\将不作为转义符号,例如r”c:\n“ 第二章 列表和元祖(列表可以修改,元祖不能修改) 列表 x=['a',1] y=['b',2] c=[x,y] 索引 0-第一

读书笔记--《Python基础教程第二版》--第2章列表和元组

第二章 列表和元组 2.1 序列的概览 序列:每个元素被分配一个序号  6种:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象         序列可以嵌套序列          python容器的概念:序列.字典.集合 2.2 通用序列的操作 索引.分片.加.乘.属于.长度,最大值.最小值.迭代 2.2.1 索引 >>> greeting='Hello' >>> greeting[0] 'H' >>> greeting[-

读书笔记--《Python基础教程第二版》--第七章 更加抽象

7.1 对象的魔力 多态 不同的类的对象使用同样的操作 封装 继承 7.1.1 多态 1.多态和方法 >>>object.getPrice() >>> 'abc'.count('a') 1 >>> [1,2,'a'].count('a') 1 >>> from random import choice >>> x=choice(['Hello world!',[1,2,'e','e',4]]) >>>

读书笔记--《Python基础教程第二版》-- 第五章 条件、循环和其他语句

5.1 print和import的更多信息 5.1.1 使用独号输出 >>> print 'Age:',42 Age: 42 >>> 1,2,3 (1, 2, 3) >>> print 1,2,3 1 2 3 >>> print (1,2,3) (1, 2, 3) >>> name='Gumby' >>> greeting='Hello' >>> salutation='Mr.'

读书笔记--《Python基础教程第二版》--第六章 抽象

6.1 懒惰即美德 >>> fibs=[0,1] >>> for i in range(8): ...  fibs.append(fibs[-2]+fibs[-1]) ... >>> fibs [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 6.2 抽象和结构 page=download_page() freqs=compute_frequencies(page) for word,freq in freqs: print word

读书笔记--Python基础教程 001

name = raw_input('please enter your name: ') or '<unknown>' 换句话说,如果raw_input语句的返回值为真(不是空字符串),那么他的值就会赋给name,否则将默认的'<unknown>'赋值给name. 这类短路逻辑可以用来实现C和Java中所谓的'三元运算符'(或条件运算符). a if b else c 如果b为真,返回a,否则,返回c.(注意,这个运算符不用引入临时变量,就可以直接使用,从而得到与raw_input

Jquery基础教程第二版学习记录

本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做什么:为什么需要jquery. 第二章:选择符工厂函数$()css选择符属性选择符自定义选择符DOM遍历方法 第三章:事件jQuery.noConflict([extreme]):运行这个函数将变量$的控制权让渡给第一个实现它的那个库.常用方法:(包括键盘,鼠标事件)blur([[data],fn]

笔记-Python基础教程(第二版)第一章

第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0  ==>0.5 解决办法2:from _future_ import division 1/2  ==>0.5 // 表示整除 >>>1//2 ==>0 浮点数//浮点数,结果依然是整除结果 >>>1.0//2.0 ==>0.0 实际操作截图: ** 表示乘