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)
{}

 

posted @ 2017-11-07 22:26  luStar  阅读(281)  评论(0编辑  收藏  举报