Python基础编程(四)字典:当索引不好用时
来源:互联网 发布:php 头部信息 编辑:程序博客网 时间:2024/05/02 04:50
字典是Python中唯一内建的映射类型。字典中的值并没有特殊的结构,但是都存储在一个特定的键(key)里。键可以是数字、字符串甚至是元组。
字典可以通过下面的方式创建:
phonebook = {'Alice':'2341','Beth':'9102','Cecil':'3258'}
4.2.1 dict函数
可以用dict函数,通过其他映射(比如其他字典)或者(键、值)这样的序列对建立字典。
>>>items = [('name','Gubmy'),('age',42)]>>>d = dict(items)>>>d{'age':42,'name':'Gubmy'}>>>d['name']'Gubmy'dict函数也可以通过关键字参数来创建字典:
>>>d = dist(name='Gubmy',age=42)>>>d{'age':42,'name':'Gumby'}
4.2.2 基本字典操作
len(d)返回d中项(键-值对)的数量;
d[k]返回关联到键k上的值;
d[k]=v将值v关联到键k上;
del d[k]删除键为k的项;
k in d检查d中是否有含有键为k的项。
字典和列表的区别:
键类型:字典的键不一定为整型数据,也可能是其他不可变的类型。
自动添加:即使那个键起初在字典中并不存在,也可以为它分配一个值,这样子点就会建立新的项。
成员资格:表达式k in d(d为字典)查找的是键,而不是值。表达式v in l(l为列表)则用来查找值,而不是索引。
4.2.3 字典的格式化字符串
>>>phonebook{'Beth':'9102','Alice':'2341','Cecil':'3258'}>>>"Cecil's phone number is %(Cecil)s."%phonebook"Cecil's phone number is 3258."
4.2.4 字典方法
1. clear
clear方法清除字典中所有的项。
2. copy
copy方法返回的是一个具有相同键-值对的新字典(这个方法实现的是浅复制,因为值本身就是相同的,而不是副本)。
>>> x = {'username':'admin','machines':['foo','bar','baz']}>>> y = x.copy()>>> y['username'] = 'mlh'>>> y['machines'].remove('bar')>>> y{'machines': ['foo', 'baz'], 'username': 'mlh'}>>> x{'machines': ['foo', 'baz'], 'username': 'admin'}可以看到,当在副本中替换值的时候,原字典不受影响,但是,如果修改了某个值(原地修改,而不是替换),原始的字典也会改变,因为同样的值也存储在原字典中(就像上面例子里的“machines”列表一样)。
避免这个问题的一种方法是使用深复制,复制其包含所有的值。可以使用copy模块的deecopy函数来完成操作:
>>>from copy import deecopy>>>d= {}>>>d['names'] = ['Alfred','Bertrand']>>>c = d.copy()>>>dc = deepcopy(d)>>>d['names'].append('Clive')>>>c{'names':['Alfired','Bertrand','Clive']}>>>dc{'names':['Alfred','Bertrand']}
3. fromkeys
fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。
>>>{}.fromkeys(['name','age']){'age':None,'name':None}
>>>dict.fromkeys(['name','age']){'age':None,'name':None}如果不想使用None作为默认值,也可以自己提供默认值:
>>>dict.fromkeys(['name','age'],‘unknown’){'age':’unknown‘,'name':‘unknown’}
4. get
get方法是个更宽松的访问字典项的方法。
get不会在试图访问字典中不存在的项的时候出错:
>>>d = {}>>>print d.get('name')None当使用get访问一个不存在的键时,没有任何异常,而得到了None值。还可以自己定义“默认”值,替换None。
5. has_key
has_key方法可以检查字典中是否含有给出的键。代表式d.has_key(k)相当于表达式k in d。(Python3.0中不包含这个函数)
6. items和iteritems
items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)。但是返回项在返回时并没有特殊的顺序。
>>>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')]iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表。
>>>it = d.iteritems()>>>it<dictionary-iterstor object at 169050>>>>list(it)#Convert the iterator to a list[('url',''http://www.python.org'),('spam',0),('title','Python Web Site')]
7. keys和iterkeys
keys方法将字典中的键以列表的形式返回,二iterkeys则返回针对键的迭代器。
(关于迭代器的知识,将在第9章详细讲)
8. pop
pop方法用来获得对应于给定键的值,然后将这个键-值对从字典中移除。
>>>d = {'x':1,'y':2}>>>d.pop('x')1>>>d{'y':2}
9. popitem
popitem方法类似于list.pop,后者会弹出列表的最后一个元素。但不同的是,popitem弹出的是随机的项,因为字典并没有“最后的元素”或者其他有关顺序的概念。若想一个接一个的移除并处理项,这个方法就非常有效了(因为不用首先获取键的列表)。
>>>d{'url':''http://www.python.org','spam':0,'title':'Python Web Site'}>>>d.popitem()('url':''http://www.python.org')>>>d{'spam':0,'title':'Python Web Site'}
10. setdefault
setdefault方法在某种程度上类似于get方法,就是能够获取与给定键值相关联的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的键值。
>>>d = {}>>>d.setdefault('name','N/A')'N/A'>>>d{'name':'N/A'}>>>d.['name'] = 'Gumby'>>>d.setdefault('name','N/A')'Gumby'>>>d{'name':'Gumby'}可以看出,当键值不存在的时候,setdefault返回默认值并且相应的更新字典。如果键值存在,那么就返回与其对应的值,但不改变字典。默认值是可选的,这点和get一样,如果不设定,会默认使用None(即上例中的‘N/A’)。
11. update
update方法可以利用一个字典项更新另外一个字典:
>>> d = { 'title':'Python Web Site', 'url':'http://www.python.org', 'changed':'Mar 14 22:09:15 MET 2008' }>>> x = {'title':'Python Language Website'}>>> d.update(x)>>> d{'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2008', 'title': 'Python Language Website'}提供的字典中的项会被添加到旧的宝典中,若有相同的键则会进行覆盖。
update方法可以使用与调用dict函数(或者类型构造函数)同样的方式进行调用。update可以和映射、拥有(键,值)对的队列(或者其他可迭代的对象)以及关键字参数一起调用。
12. values和itervalues
value方法以列表的形式返回字典中的值(Iitervalues返回值的迭代器)。与返回键的了列表不同的是,返回值的列表中可以包含重复的元素:
>>>d = {}>>>d[1] = 1>>>d[2] = 2>>>d[3] = 3>>>d[4] = 1>>>d.values()[1,2,3,1]
0 0
- Python基础编程(四)字典:当索引不好用时
- Python基础--字典:当索引不好用时
- Python学习笔记(四) 字典: 当索引不好用时
- Python 字典:当索引不好用时
- 字典:当索引不好用时
- 字典:当索引不好用时
- Python学习笔记【四】——《python基础教程》:: 字典:当索引不好用时
- Python学习笔记-第四章 字典:当索引不好用时
- Python 第四章 字典:当索引不好用时
- Python基础教程笔记——字典:当索引不好用时
- 《python 基础教程》第四章 字典:当索引不好用时
- 《Python基础教程》学习笔记 Chap4 字典:当索引不好用时
- Python基础教程--字典;当索引不好用时
- Chapter04 字典:当索引不好用时
- 025:字典:当索引不好用时
- 026:字典:当索引不好用时2
- 第四章 字典:当索引不好用时
- 第四章 字典:当索引不好用时
- sort与qsort的应用
- 昆明火车站事件引发我对生命的感慨
- ubuntu 文件解压
- 深入理解WeakHashmap
- Android学习之 关于内部Handler类引起内存泄露
- Python基础编程(四)字典:当索引不好用时
- mkyaffs2image工具解析
- static用法小结
- hdu 3644 A Chocolate Manufacturer's Problem(模拟退火)
- LeetCode Sort List
- 堆和栈的区别
- Ubuntu下Vim快捷操作
- cygwin 乱码解决方案
- 《软件工程导论》第五版 张海藩 编著 总结