1. ホーム
  2. パイソン

[解決済み】与えられたキーがすでに辞書に存在するかどうかをチェックし、それをインクリメントする

2022-03-27 22:43:52

質問

ある辞書が与えられたとき、その辞書内のあるキーがすでに非Noneの値に設定されているかどうかを調べるにはどうしたらよいですか?

つまり、こんなことをしたいのです。

my_dict = {}

if (my_dict[key] != None):
  my_dict[key] = 1
else:
  my_dict[key] += 1

つまり、そこにすでに値があればインクリメントし、そうでなければ1にしたいのです。

どのように解決するのですか?

あなたが探しているのは collections.defaultdict (Python 2.5+ で利用可能)。これは

from collections import defaultdict

my_dict = defaultdict(int)
my_dict[key] += 1

は、あなたが望むことを実行します。

通常のPythonの場合 dict の場合、与えられたキーに対応する値がない場合、次のようになります。 ない 得る None ディクショナリにアクセスするとき -- a KeyError が発生します。ですから、もし通常の dict のように、あなたのコードの代わりに

if key in my_dict:
    my_dict[key] += 1
else:
    my_dict[key] = 1