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

|