我們都知道,在 python 的字典裡邊,如果 key 不存在的話,通過 key 去取值是會報錯的。
>>> aa=
>>> aa['c']
traceback (most recent call last):
file "", line 1, in keyerror: 'c'
如果我們在取不到值的時候不報錯而是給定乙個預設值的話就友好多了。
>>> from collections import defaultdict
>>> aa=defaultdict(int)
>>> aa['a']=1
>>> aa['b']=2
>>> aa
defaultdict(, )
>>> aa['c']
0>>> aa
defaultdict(, )
這裡有個比較特殊的點:只要對應的 key 已經被設定了值之後,那麼對相同 key 再次設定預設值就沒用了。因此,如果你在迴圈裡邊給乙個 key 重複設定預設值的話,那麼也只會第一次設定的生效。
>>> aa=
>>> aa
>>> aa.get('c')
>>> aa.setdefault('c', 'hello')
'hello'
>>> aa.get('c')
'hello'
>>> aa
>>> aa.setdefault('c', 'world')
'hello'
>>> aa.get('c')
'hello'
>>> aa=
>>> aa
>>> aa['c']
traceback (most recent call last):
file "", line 1, in keyerror: 'c'
>>> aa.get('c')
>>> aa
>>> aa.get('c', 'hello')
'hello'
>>> aa.get('b')
2
解構給預設值 解構賦值預設值誤區
問題還原 這是最近 cr 的時候在業務 中發現了乙個問題,先來看一下問題 data 為介面返回的資料 const total 0 data.result const list bizobject.list 其他邏輯,比如把 list 更新到 state 中,等等 a 介面正常的情況 data 中有 ...
JS 裡怎麼給陣列填充預設值
今天看到一段 這 的寫法無法讓人一下理解它的意圖。google 之後知道它的作用是構造乙個長度為 30 的陣列,預設值是 4。但是為什麼要寫得這麼彆扭呢?我們來分解下它每一步在做什麼 這一段 生成乙個長度為30的陣列,裡面的值都是undefined。之後的.map 4 負責填充預設值 檢視文件 可以...
MYSQL datetime設定預設值
使用decimal代替float和double儲存精確浮點數 如果用float簡單的浮點數插入操作,居然會產生偏差,坑爹啊由於timestamp是從1970開始的,如果要記錄出生日期,還是需要用datetime 當然,在一般情況下,推薦使用timestamp alter table project ...