问题:Pycharm的检查员为何抱怨“ d = {}”?
用d = {}
Pycharm的代码检查器初始化字典时,会产生警告,说
这个字典的创建可以重写为字典文字。
如果我重写它d = dict()
,警告就会消失。由于{}
已经是字典文字,因此我很确定该消息是错误的。此外,似乎都d = {}
和d = dict()
有效,Python化。
这个相关的问题似乎可以得出结论,选择只取决于样式/偏好: “ d = dict()”和“ d = {}”之间的差异
皮查姆为什么会抱怨d = {}
?
更新:
Mac钉了它。该警告实际上适用于多行,而不仅仅是标记的行。
Pycharm似乎在寻找一系列连续语句,在这些语句中您初始化字典,然后在字典中设置值。例如,这将触发警告:
d = {}
d['a'] = 1
但是此代码不会:
d = {}
pass
d['a'] = 1
回答 0
字典声明中的以下代码是什么?
我认为pycharm将在出现以下情况时触发错误:
dic = {}
dic['aaa'] = 5
如你所写
dic = {'aaa': 5}
顺便说一句:如果您使用该函数,错误就会消失,但这并不一定意味着pycharm认为这dict()
是文字。这可能只是意味着它不会抱怨:
dic = dict()
dic['aaa'] = 5
HTH!
回答 1
可以在项目设置或默认设置中禁用它。
- 导航到设置->检查-> Python
- 取消选中“字典创建可以用字典文字重写”
回答 2
对于那些喜欢(就像我一样)通过单个操作初始化字典的人
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没有对此抱怨
回答 3
mydict = {
a: 5,
b:z+c/2
}
可以直接创建字典而无需先初始化字典,然后重新分配新值。
回答 4
我遇到这样的情况,该警告使我烦恼不已。就我而言,我将字典部分填充为文字,并部分地从函数的元组输出中填充,如下所示:
def get_other_values():
return 3, 4
foo = {
"a": 1,
"b": 2
}
foo["c"], foo["d"] = get_other_values()
因此,除非我为get_other_values的输出创建临时var,否则即使我使用文字创建dict,PEP8也会生成此警告。而且我无法在文字中分配c和d键,因为这些值以元组形式输出。