同列表和字符串一样,字典也有方法。
clear 清空字典中的所有项。
我们可以把空字典赋给某一字典来清空它当中的项。也可以使用clear方法彻底清空字典。
x= {}y=xx['age']='25'x['gender']='male'print x x.clear()print x print y {'gender': 'male', 'age': '25'}{}{}
如果将 x.clear 改为 x={},则结果变为
{'gender': 'male', 'age': '25'}{}{'gender': 'male', 'age': '25'}
2. 浅复制和深复制
前者指modify copy的字典的某个值时,原始字典中该值也会改变,反之亦然。
x= {}x['age']=['25','26','28'] #Listx['gender']='male' #Stringy=x.copy()x['age'].remove('25')y['age'].remove('26')print x print y {'gender': 'male', 'age': ['28']}{'gender': 'male', 'age': ['28']}
如果使用深度复制deepcopy,原字典和拷贝字典间完全独立
from copy import deepcopyx= {}x['age']=['25','26','28'] #Listx['gender']='male' #Stringy=deepcopy(x)x['age'].append('25')y['age'].remove('26')print x print y {'gender': 'male', 'age': ['25', '26', '28', '25']}{'gender': 'male', 'age': ['25', '28']}
3. fromkeys 使用给定的keys创造一个字典,默认value为None
这里看看出了什么错误?
x= {}.fromkeys('name','gender')print x {'a': 'gender', 'e': 'gender', 'm': 'gender', 'n': 'gender'}
正确形式为
x= {}.fromkeys(['name','gender'])print x {'gender': None, 'name': None}
4. get 可访问一个字典中不存在的项
x= {}print x.get('age')None
可响应用户输入字典中没有的项,更加灵活
几个比较简单的方法:
5. has_key 用于检查字典中是否有指定键,也可用 in 实现。
6. pop 用于获得给定键的值并将这一项从字典删去。
info = { 'Alice': { 'phone':'2342', 'addr':'taierzhuang rd'}, 'Bob':{ 'phone':'2242', 'addr':'jinqiao rd'} }info.pop('Alice')print info{'Bob': {'phone': '2242', 'addr': 'jinqiao rd'}}
7.setdefault用于添加键(可在键不存在的情况下添加键值,同get不一样的是它会改变原字典)
8.items & iteritems
items 以列表的形式返回字典中的项,iteritems返回一个迭代器
info = { 'Alice': { 'phone':'2342', 'addr':'taierzhuang rd'}, 'Bob':{ 'phone':'2242', 'addr':'jinqiao rd'} }print infoprint info.items()print info.iteritems(){'Bob': {'phone': '2242', 'addr': 'jinqiao rd'}, 'Alice': {'phone': '2342', 'addr': 'taierzhuang rd'}}[('Bob', {'phone': '2242', 'addr': 'jinqiao rd'}), ('Alice', {'phone': '2342', 'addr': 'taierzhuang rd'})]
相同的,keys 和 iterkeys返回键,values和itervalues返回值。
9.update 利用一个字典的项更新另一个。
d={ 'title':'Python web site', 'url':'http://www.python.org', 'changed':'April 4 20:18 2013' }x={'title':'Python Language Website'}print d.update(x)
注意此时输出None,不知道为什么,把上面最后一步分开写:
d.update(x)print d{'url': 'http://www.python.org', 'changed': 'April 4 20:18 2013', 'title': 'Python Language Website'}