30089


Pythonでdictからキーを削除するにはdelを使用しますが、削除しようとしたキーが存在しない場合にKeyErrorが発生してしまいます。

[code]

    >>> a = dict(a=1, b=2)
    >>> del a["c"]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'c'
    
[/code]

これを回避するためには以下の様に事前にキーが存在するかチェックする必要があるのですが、

[code]

    >>> a = dict(a=1, b=2)
    >>> if "c" in a:
    ...     del a["c"]
    ... 
    >>> 
    
[/code]

存在しない可能性があるキーを削除するのに、もっと簡単に書く方法はありますか？


CC BY-SA 3.0
2016-11-04T01:05:20.393
30088
2016-11-04T01:33:53.800
18862
question
python
Pythonでdictから存在しない可能性があるキーの削除


[`dict.pop`](https://docs.python.org/2/library/stdtypes.html#dict.pop) を使いましょう

[code]

    a = dict(a=1, b=2)
    a.pop('c', None) # None
    print a          # {'a': 1, 'b': 2}
    a.pop('a', None) # 1
    print a          # {'b': 2}
    
[/code]

> If `key` is in the dictionary, remove it and return its value, else return
> `default`. If `default` is not given and key is not in the dictionary, a
> KeyError is raised.

`pop(key[, default])` は辞書からキーを削除して、要素の値、あるいは `default` を返します。含まれてないキーを `pop`
する時に、2番目の引数 `default` を渡さないと、`KeyError` が起きます。上記の例のような `None` で指定すれば良いです。


CC BY-SA 3.0
2016-11-04T01:10:41.563
30089
2016-11-04T01:33:53.800
2016-11-04T01:33:53.800
18621
18621
30088
answer