3、Python-字典
字典是Python中唯一内建的映射类型,是由键/值对来组成,键可是是数字、字符串、甚至元组,但是键必须是唯一的。
1、字典的创建
字典的创建很简单,以下格式就能创建字典:dictvalue = {key1 : value1, key2 : value2, ...}
也可以使用dict()函数来创建,它是通过序列或者元组对,或者是关键字参数dict(key1 = value1, key2 = value2, ...)
1 item = dict((['name', 'xiaoli'],['age', 12])) 2 item 3 {'age': 12, 'name': 'xiaoli'} 4 item = dict([['name', 'xiaoli'],['age', 12]]) 5 item 6 {'age': 12, 'name': 'xiaoli'} 7 item = dict([('name', 'xiaoli'),('age', 12)]) 8 item 9 {'age': 12, 'name': 'xiaoli'} 10 item = dict([('name', 'xiaoli'),('age', 12)]) 11 item 12 {'age': 12, 'name': 'xiaoli'}
2、字典的基本操作
字典的基本操作和序列的相类似:
len(d)返回字典中键值对个数;
d[key]返回字典中关联到键key中的值;
d[key]=value将值value关联到键key上;
del d[key]删除键位key的值;
key in d检查d中是否含有键位key的项;
3、字典的格式化字符串
在格式化转换符%之后,加上用圆括号括起来的键,后面在跟上转换类型说明符。
template = '''<html> <head><title>%(title)s</title></head> <body> <h1>%(title)s</h1> <p>%(text)s</p> <p>%(num)d</p> </body>''' data = {'title': 'My Home Page', 'text': 'Welcome to my home page!','num':12} print template % data 运行结果: <html> <head><title>My Home Page</title></head> <body> <h1>My Home Page</h1> <p>Welcome to my home page!</p> <p>12</p> </body>
4、字典的方法
4.1 clear方法清除字典中的所有项
4.2 copy方法返回一个具有相同键值对的新字典,copy方法是一种浅复制,复制的不完整,对副本中的值重新赋值原字典中的字不变,但是如果对副本中的值进行删除或增加,则原字典中的值也会被相应修改;解决这种问题的方法是深复制deepcopy,将原字典中的完整复制一份
1 item1 = {'name':'xiaoli','course':{'math','english','chinese'}} 2 item2= item1.copy() 3 item2['name'] = 'xiaowang' 4 item2['course'].remove('math') 5 item1 6 {'course': set(['chinese', 'english']), 'name': 'xiaoli'} 7 item2 8 {'course': set(['chinese', 'english']), 'name': 'xiaowang'} 9 from copy import deepcopy 10 item3 = deepcopy(item1) 11 item3['name'] = 'xiaozhao' 12 item3['course'].remove('chinese') 13 item1 14 {'course': set(['chinese', 'english']), 'name': 'xiaoli'} 15 item3 16 {'course': set(['english']), 'name': 'xiaozhao'}
4.3 fromkeys方法使用给定的键建立新字典,每个键默认的字为None
1 c = {} 2 c.fromkeys(['name','age']) 3 {'age': None, 'name': None}
4.4 get方法用来访问字典中的值,如果不存在返回None,也可以提供一个默认的值
4.5 has_key方法用来检查字典中是否含有给定的键
4.6 items和iteritems,items方法将字典中的所有项以列表的方式返回,这些列表中的每一项格式是(key, value);iteritems方法和items方法功能相同,但是它返回的是一个迭代器对象
4.7 keys和iterkeys,keys方法将字典中的键以列表的方式返回;iterkeys方法返回字典中键的一个迭代器
4.8 pop方法用来获取字典中对应键的值,并将该键值对从字典中删除
4.9 popitem方法类似于list.pop(),它会弹出列表中的最后一个元素并删除,但popitem弹出的是随机的项,因为字典本身没有顺序的概念
4.10 setdefault方法在某种程度上类似于get方法,获取字典中给定键的值,如果键不存在可以对该键关联的值进行设置
4.11 update方法可以将一个字典中的值更新到另一个字典中,如果存在相同的键,则会把原有字典中的值覆盖掉
4.12 values和itervalues,values方法以列表的形式返回字典中的值,itervalues方法返回字典中所有值的一个迭代器