Python 字典
Python中的字典与C++中的map非常类似,即按照Key-value的模式进行存储,不过功能更加强大。
一、字典的创建
字典创建可以用大括号来直接进行,也可以对其他序列用dict()函数来进行:
a = [('name', 'lustar'), ('age', 42)] dic1 = dict(a) dic2 = dict(name='lustar', age=42)#dic1 dic2是相同的 print dic1['age'], dic2['age'] 42 42
二、字典的基本操作
字典有一些类似于序列的操作,也有一些不同之处。于C++中的map<type>类似,可以添加删除键,以及通过直接赋值增加新的键:
a = [('name', 'lustar'), ('age', 42)] dic = dict(a) dic['age'] = 22 # change value print len(dic) # length of a del dic['age'] # delete key:age print 'age' in dic # check if age is in dic dic['age'] = 22 # add 'age-22' to dic print 'age' in dic
三、字典的方法
(1)clear方法会清除所有的字典项,返回None。
dic = dict([('name', 'lustar'), ('age', 42)]) print dic.clear() print dic None {}
(2)copy方法。该方法会返回一个新的字典,不过一定要注意的是,执行的是浅拷贝。也就是说,如果对copy后的对象的value执行修改(原地修改),原来的字典对象也会受到影响;替换操作不会使得原对象受到影响。
dic = dict([('name', ['lustar']), ('age', 42)]) dic_copy = dic.copy() dic['name'] = 'LL' print dic == dic_copy False # 没有影响到原来的对象 dic_copy['name'].append('lulu') print dic == dic_copy True # 影响到了原来的对象
(3)fromkey方法为所有的键新建一个字典,值全部为None。
(4)get、has_key方法。get比较宽松,如果键存在,返回对应值;不存在则返回None,不产生异常。has_key与key in dict类似。
dic = dict([('name', 'lustar'), ('age', 42)]) print dic.get('height'), dic.get('name') print dic.has_key('height'), dic.has_key('name')
None lustar
False True
(5)items/iteritems,keys/iterkeys,values/itervalues方法。顾名思义,items把所有的键值对以列表的形式返回,keys和values则以列表形式返回键/值,iter对应返回类型为迭代器。
dic = dict([('name', 'lustar'), ('age', 42)]) iter1 = dic.iteritems() item1 = dic.items() print item1 for i in iter1: print i [('age', 42), ('name', 'lustar')] ('age', 42) ('name', 'lustar')
(6)pop和popitem方法。pop删除一个键值对,并返回值;popitem则弹出一个键值对并返回。
dic = dict([('name', 'lustar'), ('age', 42)]) print dic.pop('name') # 移除'name'-'lustar',返回lustar print dic print dic.popitem()# 移除'age'-42并返回 print dic lustar {'age': 42} ('age', 42) {}