更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

相關文章
相關標籤/搜索