dict 常用方法

1、pop方()

查看SQLAlchemy的create_engine方法时看到

default_strategy = 'plain'

strategy = kwargs.pop('strategy', default_strategy)

这段代码,不是很理解,查了一下手册,原来字典是有pop方法的,

原型:pop(key[, default])

说明:If key is in the dictionary, remove it and return its value, else return default. If default is not given and key is not in the dictionary, a KeyError is raised.

如果key在一个字典中,移除并返回字典值,否则返回默认值,如果没有默认值并且key不在字典中,则抛出KeyError异常

1 dt = {'e':{'aaa':132},'b':2,'c':332,'d':32,'ee':'gg'}
2 print dt.pop('f', 'bbbbbb') #因为f不在字典dt中,所以返回默认值bbbbbb
print dt.pop('e', 'bbbbbb') #e在字典dt中, 返回其字典值{'aaa':132}

create_engine函数完整代码为:

1 default_strategy = 'plain'
2 def create_engine(*args, **kwargs):    
3      strategy = kwargs.pop('strategy', default_strategy)
4      strategy = strategies.strategies[strategy]
5      return strategy.create(*args, **kwargs)

首先kwargs是一个字典,第3行的意思就是如果strategy在字典kwargs中,且其值为字典,则将其在kwargs中移除,如果strategy不在kwargs中,则返回默认值default_strategy。

2、setdefault(key, [default])

    如果key在字典中,则返回这个键对应的值,否则插入这个键,并以default作其值,default不设置的情况下默认为None

 

3、get(key[, default])

    项目中发现字典没相应的键,引起异常,打算用 res = dt[kId] if kId in dt else None

    后来同事说用get(key, [, default]) 解决,效果更佳。

posted @ 2012-11-24 13:49  践道者  阅读(814)  评论(0编辑  收藏  举报