Beim Initialisieren eines Wörterbuchs mit d = {}
Pycharms Code Inspector wird eine Warnung generiert
Diese Wörterbucherstellung könnte als Wörterbuchliteral umgeschrieben werden.
Wenn ich es umschreibe, verschwindet d = dict()
die Warnung. Da es sich {}
bereits um ein Wörterbuchliteral handelt, bin ich mir ziemlich sicher, dass die Nachricht fehlerhaft ist. Darüber hinaus scheint es wie beides d = {}
und d = dict()
ist gültig und pythonisch.
Diese verwandte Frage scheint zu schließen, dass die Wahl nur eine Frage des Stils / der Präferenz ist: Unterschiede zwischen "d = dict ()" und "d = {}"
Warum sollte sich Pycharm beschweren d = {}
?
AKTUALISIEREN:
Mac hat es geschafft. Die Warnung galt tatsächlich für mehrere Zeilen, nicht nur für die gekennzeichnete.
Pycharm scheint nach einer Folge aufeinanderfolgender Anweisungen zu suchen, bei denen Sie ein Wörterbuch initialisieren und dann Werte im Wörterbuch festlegen. Dies löst beispielsweise die Warnung aus:
d = {}
d['a'] = 1
Aber dieser Code wird nicht:
d = {}
pass
d['a'] = 1
something
Attribut direkt im Diktierliteral angeben können, anstatt es zuzuweisen in der nächsten Zeile.Antworten:
Was ist der folgende Code für Ihre Wörterbuchdeklaration?
Ich denke, Pycharm wird den Fehler auslösen, wenn Sie etwas haben wie:
wie du hätte schreiben können
Übrigens: Die Tatsache, dass der Fehler verschwindet, wenn Sie die Funktion verwenden, bedeutet nicht unbedingt, dass Pycharm glaubt, dass es sich
dict()
um ein Literal handelt. Es könnte nur bedeuten, dass es sich nicht beschwert für:HTH!
quelle
dic = dict()
d = { 'aaa': f1(something) }
dannd = f2(d)
dannd = f3(d)
etc ... Oder alternativd['bbb'] = f2(d)
,d['ccc'] = f3(d)
...?d = {}
,d['a'] = A
,d['b'] = f(d['a'])
,d['c'] = f(d['b'])
etc.d = {'a': A}
und dann einfach die von Ihnen beschriebene Reihenfolge beibehalten?Dies kann in den Projekteinstellungen oder Standardeinstellungen deaktiviert werden.
quelle
für diejenigen, die (genau wie ich) Wörterbücher mit einer einzigen Operation initialisieren möchten
statt vieler Zeilen wie
Am Ende kam ich zu folgendem:
Pycharm beschwert sich nicht darüber
quelle
Das Wörterbuch könnte direkt erstellt worden sein, ohne sie zuerst zu initialisieren und dann neue Werte zuzuweisen.
quelle
Ich habe eine Situation, in der diese Warnung mich verdammt nervt. In meinem Fall fülle ich mein Diktat teilweise als Literale und teilweise aus einem Tupel, das von einer Funktion ausgegeben wird, wie folgt:
Sofern ich keine vorläufigen Variablen für die Ausgabe von get_other_values erstelle, generiert PEP8 diese Warnung, obwohl ich das Diktat mit Literalen erstelle. Und ich kann die Tasten c und d im Literal nicht zuweisen, da die Werte als Tupel ausgegeben werden.
quelle