Pythonのdictについて
辞書に関する理解が不足していたように感じたので情報を整理。
基本的にはもっとinを使いましょうといことで。
値の存在確認
D = {1: 2} def is_exist(dic, k): try: return dic[k] and True except KeyError: return False print is_exist(D, 1) # => True print is_exist(D, 10) # => False
getを使うべき。と思っていたけれど、、、
print D.get(1) # => 2 print D.get(2) # => None
存在確認ならinで十分。
print 1 in D # => True print 2 in D # => False
値の削除
delを使っていた。存在していない値を消そうとするとKeyError。なのでtry-exceptで囲っていた。。。けど。
def iff_exist_delete(D, k): try: del D[k] except KeyError: pass print D # => {1: 2} iff_exist_delete(D, 10) print D # => {1: 2} iff_exist_delete(D, 1) print D # => {}
inと組み合わせれば良かった。
if 10 in D: del D[10] if 1 in D: del D[1]
追記
andと組み合わせても良いと思った。delは文なのでdict#popを使う。
D = {1:2} print 1 in D and D.pop(1) # => 2 print 10 in D and D.pop(10) # => False
|