更pythonic的使用dictionary--Python提升班

下面介绍跟字典相关的一些代码的写法python

咱们先定义一个dictionaryapp

mydict = {'a': 1,'b': 2, 'c': 3}

1. 判断是否包含元素

常见到的写法code

mydict.has_key('a')

推荐更pythonic写法get

'a' in mydict

2. 判断是否不包含元素

常见到的写法it

not 'a' in mydict

推荐更pythonic写法io

'a' not in mydict

3. 元素不存在的时候返回默认值

常见到的写法遍历

if 'd' not in mydict:
    mydict['d'] = 0
return mydict['d']

推荐更pythonic写法方法

return mydict.get('d', 0)

4. 元素的默认值

print mydict.setdefault('e', [])

setdefault方法会返回mydict['e']的值若是'e'元素存在, 若是不存在, 则会把mydict['e']设置为[], 而后返回dict

mydict = defaultdict(list)
for x in ['a', 'b']:
    mydict[x].append(100)

defaultdicy(list)生成的mydict的每一个元素的默认值都是空的listdi

5. 元素的排列顺序

mydict = {'a': 1,'b': 2, 'c': 3}
for k, v in mydict.iteritems():
    print k

像上面这段代码输出结果是什么? 是 a b c ?

答案是不必定, 不相信你能够重复试几回, 有多是a c b之类的结果

因此for in遍历dictionary的时候, 遍历顺序不必定跟定义字典的时候元素排列顺序一致

至于为何, 跟CPyhon的实现有关, 稍后我再详细解释

若是你须要一致的顺序, 请使用OrderedDict

相关文章
相关标签/搜索