1. ホーム
  2. パイソン

[解決済み】Pycharmのインスペクタで「d = {}」と文句を言われるのはなぜ?}

2022-04-11 18:49:33

質問

で辞書を初期化する場合 d = {} Pycharm のコードインスペクタは、次のような警告を発生させます。

この辞書の作成は、辞書リテラルとして書き換えることができます。

書き換えた場合 d = dict() という警告が消えます。というのも {} すでに が辞書のリテラルである場合、そのメッセージは間違いなく誤りです。さらに、それは両方のようです d = {}d = dict() は有効であり、Pythonicである。

この関連する質問では、選択は単にスタイル/好みの問題であると結論付けているようです。 d = dict()" と "d = {}" の違いについて。

なぜPycharmは d = {} ?

UPDATE

Macが釘付けになりました。警告は、フラグが立った1行だけでなく、実際には複数の行に適用されていました。

Pycharmは、辞書を初期化し、辞書に値を設定するような連続したステートメントを検索するようです。例えば、このような場合、警告が発生します。

d = {}
d['a'] = 1

しかし、このコードではそうならない。

d = {}
pass
d['a'] = 1

解決方法は?

辞書の宣言に次のコードを追加してください。

のようなものがあると、PyCharmはエラーを起こすと思います。

dic = {}
dic['aaa'] = 5

と書くことができます。

dic = {'aaa': 5}

注意: この関数を使うとエラーがなくなるということは、必ずしもpycharmが dict() はリテラルです。それは、単に、文句を言わないという意味かもしれません。

dic = dict()
dic['aaa'] = 5