为什么Pycharm的检查员抱怨“d = {}”?

当用d = {}初始化一个字典时,Pycharm的代码检查器产生一个警告,说

这个字典的创build可以被重写为字典文字。

如果我改写它d = dict()警告消失。 由于{}已经字典文字,我很确定这个信息是错误的。 而且,似乎d = {}d = dict()都是有效的,而且是Pythonic。

这个相关的问题似乎得出结论:select只是风格/偏好的问题: “d = dict()”和“d = {}”之间的区别

为什么Pycharm会抱怨d = {}

更新:

Mac钉了它。 警告实际上适用于多行,而不仅仅是被标记的警告。

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 

HTH!

对于那些喜欢(就像我一样)用单一操作初始化字典

 d = { 'a': 12, 'b': 'foo', 'c': 'bar' } 

而不是像许多行

 d = dict() d['a'] = 12 d['b'] = .... 

最后我结束了这个:

 d = dict() d.update({ 'a': 12, 'b': 'foo', 'c': 'bar' }) 

Pycharm并不抱怨这一点