70

私はpython dictを持っていて、辞書からいずれかNone''キーを静かに削除したいので、次のようなものを思いつきました:

try:
    del my_dict[None]
except KeyError:
    pass

try:
    del my_dict['']
except KeyError:
   pass

ご覧のとおり、読みにくく、重複したコードを書く原因になります。それで、キーエラーをスローせずにdictからキーを削除する方法がpythonにあるかどうか知りたいですか?

4

4 に答える 4

123

あなたはこれを行うことができます:

d.pop("", None)
d.pop(None, None)

無視するデフォルト値でディクショナリをポップします。

于 2012-07-06T08:23:36.803 に答える
13

メソッドを使用しdict.popて結果を無視できます。

for key in [None, '']:
    d.pop(key, None)
于 2012-07-06T08:22:21.587 に答える
3

あなたが試すことができます:

d = dict((k, v) for k,v in d.items() if k is not None and k != '')

またはすべての空のようなキーを削除するには

d = dict((k, v) for k,v in d.items() if k )
于 2012-07-06T08:24:44.370 に答える
3

以下は、存在する場合はキーを削除し、エラーをスローしません。

for d in [None, '']:
    if d in my_dict:
        del my_dict[d]
于 2012-07-06T08:20:19.193 に答える