Python詞典設置默認值小技巧


使用defaultdict為詞典設置默認值

測試代碼

  1. from collections import defaultdict
  2. cn = defaultdict(list)
  3. print cn
  4. cn['abc'].append('123')
  5. print cn
  6. cn['abc'].append('456')
  7. print cn
  8. bn = defaultdict(int)
  9. bn['abc']=1
  10. print bn
  11. bn['abc']+=1
  12. print bn

運行結果

  1. defaultdict(<type 'list'>,{})
  2. defaultdict(<type 'list'>,{'abc':['123']})
  3. defaultdict(<type 'list'>,{'abc':['123','456']})
  4. defaultdict(<type 'int'>,{'abc':1})
  5. defaultdict(<type 'int'>,{'abc':2})

默認詞典的值即為list -> [] 或者 int -> 0 關鍵是能一次性設置所有的值,包括新值,速度很快。

使用setdefault為詞典設置默認值

測試代碼

  1. cn ={}
  2. cn.setdefault('123',[]).append('123')
  3. print cn
  4. cn.setdefault('123',[]).append('456')
  5. print cn

運行結果

  1. {'123':['123']}
  2. {'123':['123','456']}

一次只能設置一個值,並且運行速度沒有defaultdict快

通過fromkeys設置多個鍵的值

用法:dict.fromkeys(seq[, value])),value默認是None
說明:創建並返回一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值(默認為None)

測試代碼

  1. test_list=['123','456','789']
  2. cn ={}.fromkeys(test_list,'abc')
  3. print cn

運行結果

  1. {'123':'abc','789':'abc','456':'abc'}

//TODO 為何以下代碼返回為空詞典??

  1. test_list=['123','456','789']
  2. cn ={}
  3. cn.fromkeys(test_list,'abc')
  4. print cn






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM