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

Chr*_*ars 185 python pycharm

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

这个字典创建可以重写为字典文字.

如果我重写它d = dict(),警告就会消失.由于{}已经字典文字,我很确定该消息是错误的.此外,似乎都d = {}d = dict()有效,Python化.

这个相关的问题似乎得出结论,选择只是风格/偏好的问题: "d = dict()"和"d = {}"之间的差异

Pycharm为什么会抱怨d = {}

更新:

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

Pycharm似乎在寻找一系列连续的语句,您可以在其中初始化字典,然后在字典中设置值.例如,这将触发警告:

d = {}
d['a'] = 1
Run Code Online (Sandbox Code Playgroud)

但是这段代码不会:

d = {}
pass
d['a'] = 1
Run Code Online (Sandbox Code Playgroud)

mac*_*mac 235

您的字典声明的以下代码是什么?

我认为如果你有类似的东西,pycharm会触发错误:

dic = {}
dic['aaa'] = 5
Run Code Online (Sandbox Code Playgroud)

你可以写的

dic = {'aaa': 5}
Run Code Online (Sandbox Code Playgroud)

顺便说一句:如果使用该函数,错误消失的事实并不一定意味着pycharm认为dict()是文字.这可能只是意味着它没有抱怨:

dic = dict()
dic['aaa'] = 5
Run Code Online (Sandbox Code Playgroud)

HTH!

  • 显然,对于所有这些无用的嘈杂检查,不幸的是我的一些同事完全将其关闭,这是一种耻辱,因为它对许多事情很有用,例如PEP,......,真正的问题和真实的性能提示. (6认同)
  • @HelloGoodbye - 那么,为什么不将前两个与'd = {'a':A}`合并,然后只保留你概述的序列? (5认同)

Cra*_*son 12

可以在"项目设置"或"默认设置"中禁用此功能.

  • 导航到设置 - >检查 - > Python
  • 取消选中"字典创建可以由字典文字重写"


Igo*_*r.K 8

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

d = {
  'a': 12,
  'b': 'foo',
  'c': 'bar'
}
Run Code Online (Sandbox Code Playgroud)

而不是像许多行

d = dict()
d['a'] = 12
d['b'] = ....
Run Code Online (Sandbox Code Playgroud)

最后我最终得到了这个:

d = dict()
d.update({
  'a': 12,
  'b': 'foo',
  'c': 'bar'
})
Run Code Online (Sandbox Code Playgroud)

Pycharm并没有抱怨这个

  • 我畏缩.:(所以,你实际上增加了代码的数量,使它不那么清晰,运行速度慢,只是为了摆脱你碰巧使用的编辑器中的警告...我不使用pycharm,但我会假设有一些一种配置切换,它将禁用警告,并允许您以pythonic方式继续编码.:) (6认同)
  • @mac 我现在同意。我年轻而愚蠢)从那以后我改变了(有点)并且只是禁用了那些警告 (3认同)