def shipping_city(payload):
city = payload.get("order", {}).get("shipping", {}).get("city", "")
return city.title()Deterministischer Zeilenabgleich: beanstandet eine Zeile mit `.get(..., {})`, auf das direkt ein weiteres `.get(` folgt.
Ein `.get(key, {})`, dessen leeres Dict als Default direkt in ein weiteres `.get(...)` fließt. Fehlende Daten auf jeder Ebene werden still zu einem leeren Wert.
Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.
def shipping_city(payload):
city = payload.get("order", {}).get("shipping", {}).get("city", "")
return city.title()Deterministischer Zeilenabgleich: beanstandet eine Zeile mit `.get(..., {})`, auf das direkt ein weiteres `.get(` folgt.
@dataclass
class Order:
shipping_city: str
@classmethod
def parse(cls, payload):
shipping = payload["order"]["shipping"]
return cls(shipping_city=shipping["city"])Normalisiere die Eingabe an der Grenze in ein typisiertes Objekt (eine Dataclass oder ein pydantic-Modell) oder teile den Lookup in explizite Schritte auf, die den fehlenden Fall behandeln.
Agenten greifen zu Fallbacks mit leerem Dict, um einen `KeyError` bei verschachtelten Payloads zu vermeiden, die sie nie gesehen haben. Jede Ebene versteckt eine weitere Schema-Annahme, und die Kette wird brüchiger, je weiter sich das Schema entwickelt.
ai-slop/python-chained-dict-get
ai-slop
Deterministischer Zeilenabgleich: beanstandet eine Zeile mit `.get(..., {})`, auf das direkt ein weiteres `.get(` folgt.
Ein einzelnes `.get(key, default)`, Ketten, deren Zwischen-Default kein leeres Dict-Literal ist, und Lookups, die auf getrennte Anweisungen verteilt sind, werden nicht beanstandet.
Ausgeliefert in aislop v0.9.4 als eine von vier Python-Geschwätzigkeitsregeln, abgeleitet aus SlopCodeBench (arXiv 2603.24755).