标签:python 字典
同列表和字符串一样,字典也有方法。
clear 清空字典中的所有项。
我们可以把空字典赋给某一字典来清空它当中的项。也可以使用clear方法彻底清空字典。
x= {}
y=x
x[‘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‘] #List
x[‘gender‘]=‘male‘ #String
y=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 deepcopy
x= {}
x[‘age‘]=[‘25‘,‘26‘,‘28‘] #List
x[‘gender‘]=‘male‘ #String
y=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 info
print 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‘})]
<dictionary-itemiterator object at 0x10a200a48>相同的,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‘}标签:python 字典
原文地址:http://bretoncrepe.blog.51cto.com/9590251/1582534