Python-字典常用方法

ab = {       'Swaroop'   : 'swaroopch@byteofpython.info',
             'Larry'     : 'larry@wall.org',
             'Matsumoto' : 'matz@ruby-lang.org',
             'Spammer'   : 'spammer@hotmail.com'
     }

print "Swaroop's address is %s" % ab['Swaroop']

# Adding a key/value pair
ab['Guido'] = 'guido@python.org'

# Deleting a key/value pair
del ab['Spammer']

 

 

------------------------清除------------------------
clear()方法,将字典所有内容清除:
>>> d = {'age' : 12, 'name' : 'bob'}
>>> d
{'age': 12, 'name': 'bob'}
>>> d.clear()
>>> d
{}

有人可能会问为什么不直接d={}?
看下面的例子:
>>> d = {'age' : 12, 'name' : 'bob'}
>>> x = d
>>> d = {}
>>> x
{'age': 12, 'name': 'bob'}

再看下面:
>>> d = {'age' : 12, 'name' : 'bob'}
>>> x = d
>>> d.clear()
>>> x
{}

所以如果要真正清除一个字典要用clear

------------------------复制------------------------
>>> d = {'age' : 12, 'name' : 'bob'}
>>> y = d.copy()
>>> y['age'] = 32
>>> d
{'age': 12, 'name': 'bob'}
>>> y
{'age': 32, 'name': 'bob'}
复制后 y 的修改与 d 无关
但如果一个字典中有引用类型,如list,复制只会复制其引用而不会复制其值:
>>> d = {'names': ['bob', 'sam']}
>>> y = d.copy()
>>> y['names'][0] = 'jack'
>>> y
{'names': ['jack', 'sam']}
>>> d
{'names': ['jack', 'sam']}
如果要克服这个困难,那就必须用“深复制“:
>>> from copy import deepcopy
>>> d = {'names': ['bob', 'sam']}
>>> y = deepcopy(d)
>>> y['names'][0] = 'jack'
>>> d
{'names': ['bob', 'sam']}
>>> y
{'names': ['jack', 'sam']}

------------------------get------------------------
先看一个例子:
>>> d = {}
>>> d['name']
Traceback (most recent call last):
 

File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print d.get('name')
None
>>> d.get('name', 'N/A')
'N/A'
如果用索引直接访问一个不存在的值,Python会报错,但是如果用get方法会返回一个默认值,通过传入第二个参数来自定义一个默认值

------------------------键是否存在?------------------------
有两种方法来查询:
>>> d = {'age' : 12, 'name' : 'bob'}
>>> 'age' in d
True
>>> d.has_key('age')
True
可以用in关键字也可以通过has_key方法

------------------------键和值------------------------
将键、值、键值转换成List
>>> d = {'age' : 12, 'name' : 'bob'}
>>> d.keys()
['age', 'name']
>>> d.values()
[12, 'bob']
>>> d.items()
[('age', 12), ('name', 'bob')]

------------------------设默认值------------------------
当你要确保一个字典中确保有某个键时,可以用setdefault:
>>> d = {}
>>> d.setdefault('name', 'N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['name'] = 'bob'
>>> d.setdefault('name', 'N/A')
'bob'
>>> d
{'name': 'bob'}
setdefault和get十分类似,都返回查询的值,但是setdefault将默认值加入字典中。
===========================================================
字典交集:
字典键的合并:
some_dict = { 'zope':'zzz', 'python':'rocks' } 
another_dict = { 'python':'rocks', 'perl':'$' } 

intersect = [] 
for item in some_dict.keys( ): 
    if another_dict.has_key(item): 
        intersect.append(item)
        
def union_keys(some_dict, another_dict): 
    temp_dict = some_dict.copy( ) 
    temp_dict.update(another_dict) 
    return temp_dict.keys( )
#1
print "Intersects:", intersect
# 2 faster
print "Intersects:", [k for k in some_dict if k in another_dict]
 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值