【学习整理】第四章 字典

时间:2021-03-30 21:24:40
一、创建字典 方式一: >>>item=[('name','Xujie'),('age',24)] #以元组为元素的列表 >>>d=dict(item) >>>d={'name':'Xujie','age':24} 方式二: >>>d=dict(name="xujie",age=24) >>>print d >>>{'age': 24, 'name': 'xujie'} 方式三: d={} d['name']='xujie' d['age']=12 print d {'name':'xujie','age':24} 二、字典的基本操作 d={'age': 24, 'name': 'xujie'} len(d) #返回键值对的数量 d[k] #返回键为k的值 d[k]=v # 将v赋值给k del d[k] #删除键为k的键值对 k in d # 判断键为k的键值对是否在字典中 查找效率比在列表中更高效   三、字典的格式化字符串 案例一: >>>phonebook={'Beth':123,'Alice':321,'Ceil':234} >>>print "Cei1's phone number is %(Ceil)s" % phonebook 输出:Cei1's phone number is 234 案例二: 代码: templete =''' <html> <head> <title> %(title)s </title> </head> <body> <title>%(title)s</title> <p>%(text)s</p> </body> </html> ''' data={'title':'python','text':'is better than java??'} print templete % data 输出结果: <html> <head> <title> python </title> </head> <body> <title>python</title> <p>is better than java??</p> </body> </html>   四、字典的方法 d={'name':'Xujie','age':24} 1、clear 清除字典中的所有项 d.clear() 2、copy x = d.copy() copy是浅复制,所以有一下特性 返回一个具有相同键值对的新字典 副本字典中如果替换值,原字典不受影响,如果删除键值对,原字典也会删除 如果想深复制,则使用copy模块的deepcopy函数 from copy import deepcopy x = d.deepcopy() 此时改变副本,原字典不受影响 3、fromkeys 使用给定的键建立新的字典,每个键默认对应的值为None d.fromkeys(['name','age']) 也可以自定义默认值 d.fromkeys(['name','age'],'(unknow)') d = {'name':'(unknow)','age':'(unknow)'} 4、get >>>d.get('name') >>>'xujie' 该方法与d['name'] 的区别 如果字典中没有相对应的键,get会返回None 后者会报错 5、has_key >>>d.has_key('name') >>>返回布尔值 判断字典中是否有指定的键 6、items和iteritems items将字典项以列表形式返回 d.items() #以元组为元素的列表 iteritems返回键值对的迭代器对象 d.iteritems() 很多情况下迭代器更高效 7、keys和iterkeys 同上,前者返回键的列表 后者返回迭代对象 8、pop 将指定的键所代表的键值对从字典中移除 d.pop('name') 9、popitem 随机删除字典中的键值对 d.popitem() 10、setdefault d.setdefault('name') 字典表中如果有键为‘name’ 的键值对就返回该键值对,如果没有设置该键,值默认为None,也可以通过传入第二个参数,设置默认值 11、update 用新的字典表更新已有的字典表,键重复则覆盖,没有则添加 12、values和itervalues 前者以列表形式返回字典表中的值,后者返回值的迭代器